我正在做一個「一擲千金」類型的遊戲的一個項目列表在Visual Basic 2008刪除從VB
值我有分配5個值隨機至5盒出現問題。
例如,在一個遊戲中,盒可以容納這些值:
Box 1 = 1000
Box 2 = 35000
Box 3 = 25000
Box 4 = 75000
Box 5 = 5000
並且在另一個遊戲,它們可以保持這些值
Box 1 = 75000
Box 2 = 25000
Box 3 = 1000
Box 4 = 5000
Box 5 = 35000
的主要目的是隨機地分配這些值分配給每個框,一旦賦值,就不能同時分配給另一個框。
這裏是我此刻的代碼:
Dim values As New List(Of Integer)
Dim box(4) As Integer
Dim randNum(4) As Integer
'adding values to the Value list
values.Add(1000)
values.Add(5000)
values.Add(25000)
values.Add(35000)
values.Add(75000)
Dim i As Integer
For i = 0 To 4
Dim RandomClass As New Random()
Dim RandomNumber As Integer
RandomNumber = RandomClass.Next(0, 4)
'assigning a box a random value form the list
box(i) = values(RandomNumber)
'removing that value from the list
values.RemoveAt(i)
Next
Console.WriteLine("Box 1 = " & box(0))
Console.WriteLine("Box 2 = " & box(1))
Console.WriteLine("Box 3 = " & box(2))
Console.WriteLine("Box 4 = " & box(3))
Console.WriteLine("Box 5 = " & box(4))
Console.Read()
VB不斷返回此錯誤消息當我嘗試牛逼運行應用程序:
指數超出範圍。必須是非負數且小於集合的大小。參數名稱:索引
在此先感謝您的任何答案。
如果您從列表中刪除值,則列表變短,並且下一個隨機值的結果可能引用您擺脫的某個事物。設置一個斷點並進行調試以查看。你可能想要考慮的一件事是一個Shuffle – Plutonix 2014-09-25 14:02:11
啊,這是有道理的,你能給我更多的信息嗎? – sam 2014-09-25 14:06:34
如果你想要沒有重複值的機會(就像一副牌中只有一張黑桃王牌一樣),那麼你想創建一個可能的值列表,隨機播放它們,然後分配它們。調查Fisher-Yates shuffle - 它的例子在這裏 – Plutonix 2014-09-25 14:12:26