算法 洗牌算法(Knuth算法)
@author:Jingdai
@date:2020.10.02
简介
给你一个数组(牌),要求打乱数组顺序,使每个元素出现在任何地方的概率一样。
思路
利用经典洗牌算法,就是 Knuth 算法。
如下图,在整个数组 [0, n-1]
中(包括最后一个元素)随机选出一个元素,将它和最后那个元素 [n-1]
交换,然后再在数组 [0, n-2]
中随机选出一个元素,将它与倒数第二个元素 [n-2]
交换…一直到最后一个元素,就完成了算法。
![在这里插入图片描述](https://img-blog.csdnimg.cn/2020100210524832.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNTEyNzgz,size_16,color_FFFFFF,t_70#pic_center)
代码
public void