作者rike (靠杯~~冷笑话滚蛋)
看板Visual_Basic
标题Re: [.NET] 欲使产生之乱数不重复的问题!
时间Thu Apr 13 07:58:08 2006
※ 引述《zero1590 (小白)》之铭言:
: 各位前辈好,我想产生4个乱数,
: 每个乱数不能一样,
: 我想了一个晚上,
: 做出来以下的程式...
: dim a,i,j as integer
: dim take() as integer
: Randomize()
: For a = 0 To 3
: take(a) = Int(Rnd() * 10) + 1
: Next
: For i = 3 To 1 Step -1
: For j = i - 1 To 0 Step -1
: Do While take(i) = take(j)
: take(j) = Int(Rnd() * 10) + 1
: Loop
: Next
: Next
: label1.text=take(0) & " " & take(1) & " " & take(2) & " " & take(3)
: 这个程式的瑕疵在於take(3)和take(2)绝对不重复,
: 但是take(3)和(take(1)及take(0))会产生重复,
: take(2)也可能会和take(0)重复,
: 这个问题是因为i跑到2之後1跟0的值可能会产生改变
: 但是不会回去比对是否跟3的值一样,
: i跑到1的时候0的值可能会产生改变,
: 但是不会回去比对2跟3的值,
: 问题就再於...怎麽样才能使用回圈,
: 然後能保证它不会重复出现啊~!!!
Dim a, i, j As Integer
Dim take(3) As Integer
Randomize()
Label1.Text = ""
For i = 0 To 3
For j = 0 To i
Do While a = take(j)
a = Int(Rnd() * 10) + 1
j = 0
Loop
Next
take(i) = a
Label1.Text &= take(i) & " "
Next
Label1.Text &= vbNewLine
改写了一下,有问题再丢我水球或寄站内信吧
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 222.156.10.204
※ 编辑: rike 来自: 222.156.10.204 (04/13 07:59)
1F:推 zero1590:感谢~~~!!! 04/13 18:21