asp、vb中 随机数的怪问题:用了Randomize还是有重合

来源:百度知道 编辑:UC知道 时间:2024/05/29 11:10:56
此程序是要产生1--50的不重合的随机整数。但是产生出来的还是有相同的数。

For i = 1 To 20

Randomize
response.Write( Int((50 - 1 + 1) * Rnd(50) + 1)&"<br>")
Next

若要不重复,需要作出判断,下一个产生的随机数不能和前面所有的任何一个重复,若重复就重新产生

vb产生20个不重复的随机数实例:
Private Sub Command3_Click()
Cls
Dim i, j, x
Dim a(1 To 20)
For i = 1 To 20
Randomize
a(i) = Int(Rnd * 100)
For j = i - 1 To 1 Step -1
If a(i) = a(j) Then
a(i) = Int(Rnd * 100)
j = i - 1
End If
Next
Next
For Each x In a
Print x;
Next
End Sub

Randomize只是产生随机数,在一定范围内,而不是产生不重合的,否则就不叫随机数了

你可以做个判断,当随机数和之前产生的有相同,则重新生成

你把 Randomize 函数移到循环的外面去……

在Randomize 加入一个不断变化的数值,如VB 中的timer,那么产生出来的数就不太会相同了。