random.seed (): Что он делает?

Я немного смущен тем, что 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 

Я не мог найти хорошую документацию по этому поводу. Заранее спасибо!

  • Различия между numpy.random и random.random в Python
  • Генерировать «n» уникальные случайные числа в пределах диапазона
  • выбор на основе процентного взвешивания
  • Генерировать случайные числа с заданным (численным) распределением
  • Создание такой же последовательности случайных чисел в Python, NumPy и R
  • python -> комбинации чисел и букв
  • Самый быстрый способ генерации 1 000 000 + случайных чисел в python
  • Случайная функция Python
  • 7 Solutions collect form web for “random.seed (): Что он делает?”

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

    Посещение генератора псевдослучайных чисел дает ему его первое «предыдущее» значение. Каждое начальное значение будет соответствовать последовательности генерируемых значений для данного генератора случайных чисел. То есть, если вы даете одно и то же семя дважды, вы получаете одну и ту же последовательность чисел дважды.

    Как правило, вы хотите сгенерировать генератор случайных чисел с некоторым значением, которое изменит каждое выполнение программы. Например, текущее время является часто используемым семенем. Причина, по которой это происходит автоматически, заключается в том, что если вы хотите, вы можете предоставить конкретное семя, чтобы получить известную последовательность чисел.

    Все остальные ответы, похоже, не объясняют использование random.seed (). Вот простой пример ( источник ):

     import random random.seed( 3 ) print "Random number with seed 3 : ", random.random() #will generate a random number #if you want to use the same random number once again in your program random.seed( 3 ) random.random() # same random number as before 
     >>> random.seed(9001) >>> random.randint(1, 10) 1 >>> random.seed(9001) >>> random.randint(1, 10) 1 >>> random.seed(9001) >>> random.randint(1, 10) 1 >>> random.seed(9001) >>> random.randint(1, 10) 1 >>> random.seed(9002) >>> random.randint(1, 10) 3 

    Вы попробуете это. Скажем, «random.seed» дает значение генератору случайных величин («random.randint ()»), который генерирует эти значения на основе этого семени. Одним из обязательных свойств случайных чисел является то, что они должны быть воспроизводимыми. Как только вы помещаете одно и то же семя, вы получаете одну и ту же картину случайных чисел. Таким образом, вы генерируете их с самого начала. Вы даете другое семя, которое начинается с другого начального (выше 3).

    Вы дали семя, теперь он будет генерировать случайные числа от 1 до 10 один за другим. Таким образом, вы можете принять один набор чисел для одного значения семени.

    В этом случае случайный случай на самом деле является псевдослучайным. Учитывая семя, он будет генерировать числа с равным распределением. Но с тем же семенем он будет генерировать одну и ту же последовательность чисел каждый раз. Если вы хотите, чтобы он изменился, вам нужно будет изменить свое семя. Многим людям нравится генерировать семя, основанное на текущем времени или что-то в этом роде.

    Imho, он используется для генерации одного и того же результата случайного курса, когда вы random.seed(samedigit) используете random.seed(samedigit) .

     In [47]: random.randint(7,10) Out[47]: 9 In [48]: random.randint(7,10) Out[48]: 9 In [49]: random.randint(7,10) Out[49]: 7 In [50]: random.randint(7,10) Out[50]: 10 In [51]: random.seed(5) In [52]: random.randint(7,10) Out[52]: 9 In [53]: random.seed(5) In [54]: random.randint(7,10) Out[54]: 9 

    Вот небольшой тест, демонстрирующий, что подача метода seed() с тем же аргументом приведет к тому же псевдослучайному результату:

     # testing random.seed() import random def equalityCheck(l): state=None x=l[0] for i in l: if i!=x: state=False break else: state=True return state l=[] for i in range(1000): random.seed(10) l.append(random.random()) print "All elements in l are equal?",equalityCheck(l) 
      #Simple python programme to understand random.seed() importance import random random.seed(10) for i in range(5): print(random.randint(1,100)) 

    Выполните вышеуказанную программу несколько раз ….

    1-я попытка: печатает 5 случайных целых чисел в диапазоне 1 – 100

    Вторая попытка: распечатывает те же 5 случайных чисел, что и в приведенном выше исполнении.

    Третья попытка: такая же

    …..Скоро

    Объяснение: Каждый раз, когда мы запускаем указанную выше программу, мы устанавливаем значение семени на 10, тогда случайный генератор принимает это как ссылочную переменную. Затем, выполняя некоторую предопределенную формулу, он генерирует случайное число.

    Следовательно, установка семени в 10 в следующем выполнении снова устанавливает ссылочный номер в 10, и снова начинается то же поведение ….

    Как только мы сбросим значение семени, оно дает те же растения.

    Примечание. Измените начальное значение и запустите программу, вы увидите другую случайную последовательность, чем предыдущая.

    Python - лучший язык программирования в мире.