Порядок смещения в неправильной реализации Fisher Yates Shuffle - PullRequest
0 голосов
/ 11 сентября 2018

Я реализовал алгоритм тасования следующим образом:

import random
a = range(1, n+1) #a containing element from 1 to n
for i in range(n):
    j = random.randint(0, n-1)
    a[i], a[j] = a[j], a[i]

Поскольку этот алгоритм смещен.Я просто хотел узнать для любого n (n ≤ 17) , можно ли найти, что перестановка имеет наибольшую вероятность возникновения, а какая перестановка имеет наименьшую вероятность из всех возможных n! перестановок.Если да, то что это за перестановка ??

Например n = 3 :

a = [1,2,3]

Есть 3 ^ 3 = 27 возможных случайных чисел

Нет.возникновение различных перестановок:

1 2 3 = 4

3 1 2 = 4

3 2 1 = 4

1 3 2 = 5

2 1 3 = 5

2 3 1 = 5

PS Я не очень хорошо разбираюсь в математике.

1 Ответ

0 голосов
/ 11 сентября 2018

Это никоим образом не является доказательством, но вы можете быстро придумать распределение вероятностей размещения, запустив смещенный алгоритм миллион раз.Это будет выглядеть как эта картинка из Википедии:

permute with all order bias

Несмещенное распределение будет иметь 14,3% в каждом поле.

Чтобы получитьСкорее всего, распределение, я думаю, можно просто выбрать самый высокий процент для каждого индекса.Это означает, что, скорее всего, весь массив будет перемещен вниз на единицу, и первый элемент станет последним.

Редактировать: Я провел некоторые симуляции, и этот результат, скорее всего, неверный.Я оставлю этот ответ, пока не смогу придумать что-нибудь получше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...