Я немного запутался в том, что random.seed()
делает в Python. Например, почему приведенные ниже испытания делают то, что они делают (последовательно)?
>>> import random
>>> random.seed(9001)
>>> random.randint(1, 10)
1
>>> random.randint(1, 10)
3
>>> random.randint(1, 10)
6
>>> random.randint(1, 10)
6
>>> random.randint(1, 10)
7
Я не мог найти хорошую документацию по этому вопросу.
python
random
random-seed
Ахаан С. Рунгта
источник
источник
random.seed
. Обычно вы просто вызываетеrandom.seed()
, и оно использует текущее время в качестве начального значения, что означает, что всякий раз, когда вы запускаете скрипт, вы получаете другую последовательность значений.Ответы:
Генераторы псевдослучайных чисел работают, выполняя некоторую операцию со значением. Обычно это значение является предыдущим числом, сгенерированным генератором. Однако при первом использовании генератора предыдущее значение отсутствует.
Заполнение генератора псевдослучайных чисел дает ему первое «предыдущее» значение. Каждое начальное значение будет соответствовать последовательности сгенерированных значений для данного генератора случайных чисел. То есть, если вы предоставите одно и то же начальное число дважды, вы получите одинаковую последовательность чисел дважды
Как правило, вы хотите заполнить свой генератор случайных чисел некоторым значением, которое изменит каждое выполнение программы. Например, текущее время является часто используемым семенем. Причина, по которой это не происходит автоматически, заключается в том, что при желании вы можете указать конкретное начальное число для получения известной последовательности чисел.
источник
Все остальные ответы не объясняют использование random.seed (). Вот простой пример ( источник ):
источник
Ты попробуй это.
Допустим, «random.seed» задает значение для генератора случайных значений («random.randint ()»), который генерирует эти значения на основе этого начального числа. Одним из обязательных свойств случайных чисел является то, что они должны быть воспроизводимыми. Когда вы кладете одинаковое начальное число, вы получаете одинаковую комбинацию случайных чисел. Таким образом, вы генерируете их с самого начала. Вы даете другое семя - оно начинается с другого инициала (выше 3).
Учитывая семя, он будет генерировать случайные числа от 1 до 10 один за другим. Таким образом, вы принимаете один набор чисел для одного начального значения.
источник
Случайное число генерируется какой - либо операции по предыдущему значению.
Если предыдущего значения нет, то текущее время как предыдущее значение автоматически. Мы можем предоставить это предыдущее значение по своему усмотрению,
random.seed(x)
гдеx
может быть любое число или строка и т. Д.Следовательно, на
random.random()
самом деле это не идеальное случайное число, оно может быть предсказано с помощьюrandom.seed(x)
.Следовательно, генерация случайного числа на самом деле не случайна, потому что она работает на алгоритмах. Алгоритмы всегда дают один и тот же вывод на основе одного и того же ввода. Это означает, что это зависит от стоимости семени. Таким образом, чтобы сделать его более случайным, автоматически присваивается время
seed()
.источник
источник
Выполните вышеуказанную программу несколько раз ...
1-я попытка: печатает 5 случайных чисел в диапазоне от 1 до 100
2-я попытка: печатает те же 5 случайных чисел, которые появились в приведенном выше исполнении.
3-я попытка: то же самое
.....Скоро
Объяснение: Каждый раз, когда мы запускаем вышеуказанную программу, мы устанавливаем начальное значение в 10, тогда случайный генератор принимает это как опорную переменную. И затем, выполнив некоторую предопределенную формулу, он генерирует случайное число.
Следовательно, установка seed на 10 в следующем выполнении снова устанавливает номер ссылки на 10, и снова начинается то же самое поведение ...
Как только мы сбрасываем значение семени, оно дает те же самые растения.
Примечание: измените начальное значение и запустите программу, вы увидите случайную последовательность, отличную от предыдущей.
источник
В этом случае случайное на самом деле является псевдослучайным. Учитывая семя, оно будет генерировать числа с равным распределением. Но с одним и тем же начальным числом он будет каждый раз генерировать одну и ту же последовательность чисел. Если вы хотите, чтобы это изменилось, вам придется изменить свое семя. Многим людям нравится создавать семена, основанные на текущем времени или чем-то подобном.
источник
Имхо, он используется для генерации того же результата случайного курса при
random.seed(samedigit)
повторном использовании .источник
Установите
seed(x)
перед созданием набора случайных чисел и используйте одно и то же начальное число для создания одинакового набора случайных чисел. Полезно в случае воспроизведения вопросов.источник
Вот мое понимание. Каждый раз, когда мы устанавливаем начальное значение, генерируется «метка» или «ссылка». Следующий вызов random.function присоединяется к этой «метке», поэтому в следующий раз, когда вы вызовете то же самое начальное значение и random.function, он даст вам тот же результат.
источник
Вот небольшой тест, который демонстрирует, что передача
seed()
метода с тем же аргументом приведет к тому же псевдослучайному результату:источник
len(set(l))<=1
random.seed(a, version)
в Python используется для инициализации генератора псевдослучайных чисел (PRNG) .PRNG - это алгоритм, который генерирует последовательность чисел, приближающую свойства случайных чисел. Эти случайные числа могут быть воспроизведены с использованием начального значения . Таким образом, если вы предоставляете начальное значение, PRNG запускается из произвольного начального состояния с использованием начального значения.
Аргумент
a
- это начальное значение. Если значение равно aNone
, то по умолчанию используется текущее системное время.и
version
является целым числом, указывающим, как преобразовать параметр в целое число. Значение по умолчанию 2.Если вы хотите, чтобы воспроизводилось одно и то же случайное число, предоставьте то же самое семя снова
Если вы не предоставите начальное число, оно генерирует другое число, а не 1, как раньше
Если вы предоставите другое семя, чем раньше , то оно даст вам другое случайное число
Итак, в итоге, если вы хотите воспроизвести одно и то же случайное число, укажите начальное число. Конкретно это же семя .
источник