必须从arraylist中选择一个随机数,从数据库中生成适当的信息,此时它在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)
答案 0 :(得分: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
主要用于向后兼容。
CInt
周围rn(index)
是必需的,因为您使用旧的无类型ArrayList
而不是新的,有光泽的强类型List(Of Integer)
。如果您使用后者,则可以删除外部CInt
。
答案 1 :(得分: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()
我想我会按照建议使用更新的风格