洗牌演算法 Fisher–Yates Shuffle

weixin_33850890發表於2018-01-19

關於我的 Leetcode 題目解答,程式碼前往 Github:https://github.com/chenxiangcyr/leetcode-answers


如何將一個陣列 int[] arr 打亂?
利用隨機數,進行元素的交換,程式碼如下:

public int[] shuffle(int[] current) {
    // Fisher–Yates Shuffle
    for(int i = 1; i < current.length; i++) {
        // generate a random number [0, i]
        int j = random.nextInt(i + 1);
        
        // swap i and j
        int t = current[i];
        current[i] = current[j];
        current[j] = t;
    }
    
    return current;
}

相關文章