我們常常會需要人物隨機出場順序。使用內置的Random函數常常會隨機到重複的人物。這樣會達不到我們想要的效果。所以我們會用到簡單的洗牌算法來實現隨機且不重複的物體。
首先我們需要創建兩個鏈表
public List<GameObject> OriginalPlayer;//未排序的玩家
public List<GameObject> GamePlayer;//初始化隨機後玩家
之後進行洗牌隨機的算法實現
private void Upsetorder()
{
System.Random c = new System.Random();
int numer = OriginalPlayer.Count;
//有序List中元素打亂後向新list轉移
for (int i = 0; i < numer; i++)
{
int random_index = c.Next(0, OriginalPlayer.Count);
GamePlayer.Add(OriginalPlayer[random_index]);
OriginalPlayer.RemoveAt(random_index);
}
}
原理是先將想要隨機的東西放入第一個鏈表,然後隨機其索引,將隨機出來的物體在第一個鏈表裏去除,之後放入第二個鏈表,反覆實現之後。第二個鏈表的物體就是隨機之後的物體順序。