我不确定以下伪代码是否可以生成uniformly random permutation:
PERMUTATE(A):
n = A.length
for i = 1 to n
swap A[i] and A[random(1,n)]
Run Code Online (Sandbox Code Playgroud)
这似乎是对的,但任何人都可以给我一个严格的证据来验证其正确性或错误吗?
ami*_*mit 19
这个解决方案存在偏差,你希望Fisher Yates算法 [类似]用于非偏置置换.[基本上,你需要交换random(i,n)而不是与random(1,n)]
该主题讨论了解决方案偏向的方式和原因.
| 归档时间: |
|
| 查看次数: |
7779 次 |
| 最近记录: |