Как исправить значение, произведенное Random? - PullRequest
4 голосов
/ 26 ноября 2009

У меня проблема, которая в моем коде может помочь любому. это пример кода.

from random import *    
from numpy import *
r=array([uniform(-R,R),uniform(-R,R),uniform(-R,R)])

def Ft(r):
    for i in range(3):
       do something here, call r
    return something

однако я обнаружил, что в оболочке Python каждый раз, когда я запускаю функцию Ft, она дает мне разные результат ..... выглядит как внутри функции, в каждой итерации цикла for, вызывайте r один раз, он дает случайные числа один раз ... но не фиксирует начальное случайное число при вызове функции .... как можно Я чиню это? как насчет использования b = copy (r) и вызова b в функции Ft? Спасибо

Ответы [ 2 ]

10 голосов
/ 26 ноября 2009

Вы хотите сказать, что вы хотите, чтобы вызовы randon.uniform() возвращали одну и ту же последовательность значений при каждом запуске функции?
Если это так, вам нужно вызвать random.seed(), чтобы установить начало последовательности на фиксированное значение. В противном случае текущее системное время используется для инициализации генератора случайных чисел, который предназначен для того, чтобы он каждый раз генерировал различную последовательность.

Как-то так должно работать

random.seed(42) # Set the random number generator to a fixed sequence.
r = array([uniform(-R,R), uniform(-R,R), uniform(-R,R)])
1 голос
/ 26 ноября 2009

Я думаю, что вы имеете в виду «список» вместо «массив», вы пытаетесь использовать функции, когда вам это действительно не нужно. Если я вас правильно понимаю, вы хотите отредактировать список случайных чисел:

  import random
  r=[random.uniform(-R,R) for x in range(3)]
  def ft(r):
      for i in range(len(r)):
          r[i]=???
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...