你写的实现是有点问题的,例如arr = ["a","b","c","d"],
for i in range(1,3), 将只循环2次,若想 arr[0] 为 “a”, 那么第一次循环选中b,1/2的概率, 第二次循环选中c或者d,2/3的概率, 那么arr[0]为“a”的概率是 1/2 * 2/3 = 1/3,而d将永远不会有机会在arr[0]位置。
python-洗牌算法的实现简单来说 Fisher–Yates shuffle 算法是一个用来将一个有限集合生成一个随机排列的算法(数组随机排序)。这个算法生成的随机排列是等概率的。Fisher–Yat...