如何打乱数组(洗牌)

如何打乱数组(洗牌),第1张

如何打乱数组洗牌
  • 暴力洗牌
    设原数组为 nums,用一个数组 waiting 或者是其他数据结构(如 ArrayList)保存这个数组的所有数字,然后每次随机从这个 waiting 数组中抽出一个数放在 打乱后的数组 shuffled 中。
    具体实现:
      Random random = new Random();
      for(int i= 0;i 
  • KnuthKnuth 洗牌算法
    随机交换当前坐标和其他坐标
    0 可以和 [0, n -1] 中的某个坐标交换,1 可以和 [1, n-1] 中的某个坐标交换。
    public int[] shuffle() {
        int[] ans = nums.clone();
        for (int i = 0; i < n; i++) {
            swap(ans, i, i + random.nextInt(n - i));
        }
        return ans;
    }

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5595329.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存