-1
如標題所示,我有一個20個整數的數組。每次我生成一個新的隨機數,我想檢查它是否已經包含在數組中。如果該數字存在於數組中,我想重新生成一個隨機數並重新從數組開始重新檢查數組。最後,我的20個整數數組應該包含7到30之間的所有唯一值。我已經創建了一個完美的代碼混亂。感謝來自這裏的專家的一些幫助。非常感謝。如何確保一個數組只包含唯一的數字在vba中
Dim Low, High, tmpNo As Double
Dim myarray(20) As Integer
Dim i, x As Integer
Low = 7
High = 30
i = 0
x = 0
For i = 0 To 19
tmpno = Int((High - Low + 1) * Rnd() + Low)
If i = 0 Then
myarray(i) = tmpno
tmpno = Int((High - Low + 1) * Rnd() + Low)
End If
For x = 0 To Len(i)
If tmpno = myarray(x) Then
tmpno = Int((High - Low + 1) * Rnd() + Low)
x = 0
Else
If myarray(x + 1) = 0 Then
myarray(x + 1) = tmpno
tmpno = Int((High - Low + 1) * Rnd() + Low)
x = 0
End If
End If
Next
Next
而不是產生,檢測DUP並重,我建議你做一個洗牌代替。從低到高填充一個數組,然後洗牌,然後取前20個元素。 – 2014-09-11 06:36:01
感謝您的提示。我想這應該做的竅門整潔...現在要弄清楚如何洗牌陣列。 – schenker 2014-09-11 13:05:30
請參閱[此答案](http://stackoverflow.com/a/18543399/445425)。請注意Webb偏見的評論和鏈接 – 2014-09-11 14:33:38