Knuth 洗牌算法

使用场景

随机打乱数组,例如:洗牌、扫雷游戏

	//产生[a,b)之间的随机整数
    private static int getRandom(int a,int b){
        Random random = new Random();
        return random.nextInt(b) % (b-a) + a;
    }

	//Knuth 洗牌算法
    private static void Upset(int a[]){
        for(int i=0;i<a.length;i++){
            int r=getRandom(i,a.length);
            if(i==r)continue;
            int t=a[i];a[i]=a[r];a[r]=t;
        }
    }

参考资料

https://www.bilibili.com/video/av84127632?t=2
https://blog.csdn.net/kexuanxiu1163/article/details/95556971

你可能感兴趣的:(算法)