如何在VB中实现永不重复的随机数?1~30或1~50
如何在VB中实现永不重复的随机数?1~30或1~50?我用的是Int(Rnd() * 30)VB --------------------编程问答-------------------- 1-30或1-50为整数的随机数只有30个或者50个,不可能永不重复 --------------------编程问答-------------------- 既然随机怎么能不重复
记录出现过的 --------------------编程问答-------------------- 一共就30到50个数字,何来"永不重复"之说? --------------------编程问答-------------------- 既然是随机,怎么会有重复?1~30,总不可能每次都出现同一个数字吧? --------------------编程问答-------------------- 第一个数用 Rnd() 计算得到(同时作为后续的种子);
其他的数用线性同余算法计算;
可以保证取 30 次正好将 1~30 每个都取一次。
--------------------编程问答--------------------
--------------------编程问答-------------------- google 洗牌算法
Option Explicit
Private Sub Command1_Click()
Dim i As Integer, n As Integer
If List1.ListCount Then
If List1.ListCount > 1 Then
n = Int(Rnd * List1.ListCount)
Else
n = 0
End If
List2.AddItem List1.List(n)
List1.RemoveItem n
End If
End Sub
Private Sub Form_Load()
Dim i As Integer
For i = 1 To 30
List1.AddItem i
Next i
List2.Clear
Randomize
End Sub
补充:VB , 多媒体