Fisher-Yates shuffle的意思是我们每次从选中的segment中取出最后一个数,和之前随机选中的数交换,不断迭代,最终实现随机shuffle。python3.6中官方Shuffle的代码如下
_int = int
for i in reversed(range(1, len(x))):
# pick an element in x[:i+1] with which to exchange x[i]
j = _int(random() * (i+1))
x[i], x[j] = x[j], x[i]
为什么不直接选择全球位置并交换?</p>