Известный алгоритм Shuffle Fisher-Yates может использоваться для случайной перестановки массива A длины N:
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.
Что произойдет, если вы допустите эту ошибку? Я знаю, что полученная перестановка распределяется неравномерно, но я не знаю, какие гарантии существуют в том, что будет в результате распределения. В частности, есть ли у кого-нибудь выражение для вероятностных распределений над конечными положениями элементов?