случайность python random.shuffle - PullRequest
6 голосов
/ 01 июля 2010

Следуют с сайта Python, около

random.shuffle(x[, random])

Перемешайте последовательность x на месте. Необязательный аргумент random - это функция с 0 аргументами, возвращающая случайное число с плавающей точкой в ​​[0.0, 1.0); по умолчанию это функция random().

Обратите внимание, что даже для довольно небольших len(x) общее число перестановок x больше, чем период большинства генераторов случайных чисел; это означает, что большинство перестановок длинной последовательности никогда не может быть сгенерировано.

Если я хочу повторить получение случайной перестановки ['a'..'k'], похоже, что случайное перемешивание НЕ даст мне случайности. Правильно ли мое понимание?

Спасибо!

Ответы [ 2 ]

6 голосов
/ 01 июля 2010

Для последовательности длиной 11, есть 11!или 39 916 800 (~ 2 25,3 ) возможных перестановок.Для Mersienne Twister (случайный алгоритм Питона) период равен 2 19937 - 1. Другими словами, у вас все будет хорошо.

6 голосов
/ 01 июля 2010

Вам не о чем беспокоиться. Если под len(x) меньше 2000, random.shuffle должно работать нормально.

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