着名的Fisher-Yates shuffle算法可用于随机置换长度为N的阵列A:
For k = 1 to N
Pick a random integer j from k to N
Swap A[k] and A[j]
我一遍又一遍地告诉我的一个常见错误是:
For k = 1 to N
Pick a random integer j from 1 to N
Swap A[k] and A[j]
也就是说,不是从k到N选择一个随机整数,而是从1到N中选择一个随机整数。
如果你犯了这个错误怎么办?我知道由此产生的排列不是均匀分布的,但我不知道对于最终的分布有什么保证。特别是,有没有人有关于元素最终位置的概率分布的表达式?
慕沐林林