1

データベースから適切な情報を生成するには、配列リストから乱数を選択する必要があります。現時点では、rnd 行でバグが発生しています。

    Dim rn As New List(Of Integer)
    Dim QPass As String
    rn.Add(71)
    rn.Add(72)
    rn.Add(79)
    rn.Add(80)
    Dim index As Integer = CInt(Math.Floor(Rnd() * 4))
    Dim randomValue As Integer = CInt(rn(index))
    QPass = randomValue.ToString()
    Session("Pt2") = rn
    PT2imgImage.ImageUrl = "showImage.ashx?i=" + QPass
    PT2imgImage.Width = Unit.Pixel(600)
4

2 に答える 2

3

ここ

rn = rn(Rnd() * 4)

Integer (ArrayList から選択された値) を ArrayList として宣言された変数に入れようとしています。それはうまくいきません。新しい変数を使用します。

Dim index As Integer = CInt(Math.Floor(Rnd() * 4))
Dim randomValue As Integer = CInt(rn(index))

QPass = randomValue.ToString()
Session("Pt2") = randomValue

CInt(Math.Floor(...))Rnd() * 4から返される浮動小数点値が正しく切り捨てられ、整数に変換されることを保証します。これは、配列リストのインデックスに使用できます。最終的には、これをより .NET の方法で乱数を取得する方法 (例: Random.Next) に置き換えたいと思うかもしれません。Rnd主に下位互換性のためです。

新しい光沢のある強く型付けされた の代わりに古い型付けされていない を使用するため、 CIntaroundrn(index)が必要です。後者を使用する場合は、外側の.ArrayListList(Of Integer)CInt

于 2013-02-04T16:41:00.217 に答える
2
    Dim rn As New List(Of Integer)
    Dim QPass As String
    Dim rnd As New Random
    rn.Add(7)
    rn.Add(8)
    rn.Add(15)
    rn.Add(16)
    Dim randomValue As Integer = rn(Rnd.Next(0, 4))
    QPass = randomValue.ToString()

提案された新しいスタイルで作業すると思った

于 2013-02-06T15:14:21.070 に答える