洗牌算法

音乐软件中的随机播放算法是怎样实现的?

  1. 洗牌算法(Shuffle)
  2. 生成一个随机数(Random)

这里给出洗牌算法的一个实现,跟蓄水池抽样非常类似

    int[] arr = new int[10];
    for (int i = 0; i < arr.length; i++) {
        arr[i] = i;
    }
    System.out.println(Arrays.toString(arr));
    for (int i = 1; i < arr.length; i++) {
        int x = ThreadLocalRandom.current().nextInt(i);
        int tmp = arr[x];
        arr[x] = arr[i];
        arr[i] = tmp;
    }
    System.out.println(Arrays.toString(arr));

参考:洗牌算法分析总结

推荐阅读更多精彩内容