2009-08-31 69 views
0
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 

回答

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

我想你可能错误输入了这段代码,因为我没有看到你正在打印什么。另外,一般来说,你应该把你的随机数赋给一个临时变量。现在,您添加到列表中的随机数与您的if区块中的不一样。

+0

所以u能修改此代码来生成100 2位随机号? – compgeek 2009-08-31 16:57:40

1

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

你没有对什么数字加到List1上进行过滤,我不太清楚你打印的是什么(我不是VB的人)。

1

该错误似乎分成两部分。首先,你在你的列表中添加一个不同于你正在比较的数字。

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

发生了什么事是你基本上是做100 * 0.5返回你50或100 * 0.01。如果你想有一个下限的100,你必须做这样它会返回1.

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

而且,请不要忘记使用赛第一轮