以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  如何用NEXT()产生不重复的随机数呀?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=14853)

--  作者:liguichuan
--  发布时间:2011/12/4 16:15:00
--  如何用NEXT()产生不重复的随机数呀?

各位,请问如何使用NEXT()产生不重复的随机数呀?

另外,随机数只能是整数吗?可不可以小数呢?

请各位赐教~!

代码如何实现。


--  作者:mr725
--  发布时间:2011/12/4 16:20:00
--  

帮助中的:

For i As integer = 0 To 9
    Output.Show(Rand.NextDouble)
Next


--  作者:liguichuan
--  发布时间:2011/12/4 16:26:00
--  

哦,看到了,小数搞定,用“Rand.NextDouble”另外不重复怎么弄呀。

谢谢。

[此贴子已经被作者于2011-12-4 16:25:52编辑过]

--  作者:程兴刚
--  发布时间:2011/12/4 22:45:00
--  
Dim Values As New List(Of Integer)
Dim a As Integer
For i As Integer = 0 To 100
    Values.Add(i)
Next
For i As Integer = 0 To 50
    a = Rand.Next(Values.Count-1)
    Output.Show(Values(a))
    Values.RemoveAt(a)
Next

--  作者:程兴刚
--  发布时间:2011/12/4 23:05:00
--  

或者这样更严谨一点(随机抽取0~50的不同重复的随机数):

 

Dim Values As New List(Of Integer)
For i As Integer = 0 To 50
    Values.Add(i)
Next

Dim a,b As Integer

a = Values.Count -1
For i As Integer = 0 To 50

    b = Rand.Next(a)
    Output.Show(Values(b))
    Values.RemoveAt(b)

    a = a - 1
Next

[此贴子已经被作者于2011-12-4 23:31:53编辑过]

--  作者:狐狸爸爸
--  发布时间:2011/12/5 9:25:00
--  

生成50个四位的随机小数,而且绝对不会重复:

 

Dim Values As New List(Of Double)
Do
    Dim b As Double = Math.Round(Rand.NextDouble,4)
    If values.Contains(b)= False Then
        values.Add(b)
    End If
    If values.count = 50 Then
        Exit Do
    End If
Loop


--  作者:程兴刚
--  发布时间:2011/12/5 11:13:00
--  
呵呵,我落伍了,学习!
--  作者:花开的声音
--  发布时间:2016/12/21 15:48:00
--  
学习。