当前位置:编程学习 > VB >>

如何在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 每个都取一次。
--------------------编程问答--------------------

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
--------------------编程问答-------------------- google 洗牌算法
补充:VB ,  多媒体
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,