簡易的洗牌算法

我們常常會需要人物隨機出場順序。使用內置的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);
        }
    }

原理是先將想要隨機的東西放入第一個鏈表,然後隨機其索引,將隨機出來的物體在第一個鏈表裏去除,之後放入第二個鏈表,反覆實現之後。第二個鏈表的物體就是隨機之後的物體順序。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章