为什么1位数的随机数也会由以下代码生成?

时间:2009-08-31 16:52:15

标签: random vb6

Private Sub Command1_Click()
Dim x As Integer
For x = 1 To 100
    List1.AddItem (Int(100 * Rnd()))
    If ((Int(100 * Rnd())) >= 10) Then
        Print
    Else

    End If
Next x
End Sub

4 个答案:

答案 0 :(得分:2)

我认为您可能输错了此代码,因为我看不到您要打印的内容。此外,通常您应该将随机数分配给临时变量。因此,您添加到列表中的随机数与if块中的随机数不同。

答案 1 :(得分:2)

如果您希望随机数范围从10到99,则需要稍微计算它们。有90种不同的可能值,因此您将Rnd()乘以。然后添加最小值,即10:

Private Sub Command1_Click()
   Dim x As Integer
   For x = 1 To 100
      List1.AddItem(Int(90 * Rnd()) + 10)
   Next x
End Sub

答案 2 :(得分:1)

看起来是因为您生成了一次随机数,并将其添加到List1;然后你生成另一个不同的随机数并有条件地打印它。

您没有对添加到List1的数字进行任何过滤,我不太确定您要打印的是什么(我不是VB人员)。

答案 3 :(得分:1)

错误似乎分为两部分。首先,您要在列表中添加一个与您要比较的数字不同的数字。

第二个是你以错误的方式使用Rnd。有关用法,请参阅http://msdn.microsoft.com/en-us/library/f7s023d2(VS.80).aspx,但基本上,您设置代码的方式是生成0到100之间的数字。因为rnd返回单个数据。

发生了什么事情,你基本上做100 * 0.5,返回50或100 * 0.01,返回1。

如果你想要100的下限,你必须这样做。

CInt(Int((upperbound - lowerbound + 1) * Rnd() + lowerbound))

另外,请不要忘记在使用Rnd之前调用Randomize()