我期待隨機隨機使用密鑰洗牌列表/數組。我希望能夠使用密鑰重複相同的隨機順序。需要使用密鑰的可重複的隨機數組隨機洗牌
所以我會隨機生成一個數字鍵從說1到20,然後使用該鍵嘗試隨機洗牌列表。
我第一次嘗試只是使用該鍵來繼續遍歷我的列表,遞減鍵直到= 0,然後抓住我所在的任何元素,將其刪除並將其添加到我的混洗數組中。結果是隨機的,但是當數組很小時(我的大部分時間都是這樣)和/或關鍵是小的,它不會結束混洗......似乎更像是一個轉變。
我必須能夠確定什麼樣的順序
這裏是在csharp的一些示例代碼:
public static TList<VoteSetupAnswer> ShuffleListWithKey(TList<VoteSetupAnswer> UnsortedList, int ShuffleKey)
{
TList<VoteSetupAnswer> SortedList = new TList<VoteSetupAnswer>();
int UnsortedListCount = UnsortedList.Count;
for (int i = 0; i < UnsortedListCount; i++)
{
int Location;
SortedList.Add(OneArrayCycle(UnsortedList, ShuffleKey, out Location));
UnsortedList.RemoveAt(Location);
}
return SortedList;
}
public static VoteSetupAnswer OneArrayCycle(TList<VoteSetupAnswer> array, int ShuffleKey, out int Location)
{
Location = 0;
if (ShuffleKey == 1)
{
Location = 0;
return array[0];
}
else
{
for (int x = 0; x <= ShuffleKey; x++)
{
if (x == ShuffleKey)
return array[Location];
Location++;
if (Location == array.Count)
Location = 0;
}
return array[Location];
}
}
謝謝你的回覆。如果我想重複我的數組的相同順序,那麼隨機random.nextInt將不會每次調用返回不同的數字。我需要一種方法來重現相同的洗牌順序 – user277488 2010-03-08 17:14:56
用固定種子對隨機類進行種子處理。 – bmargulies 2010-03-08 19:45:24