【问题标题】:How to fix value produced by Random?如何固定随机产生的价值?
【发布时间】:2010-12-20 18:54:19
【问题描述】:

我遇到了一个问题,在我的代码中,任何能提供帮助的人都会很棒。 这是示例代码。

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 shell 中,每次我运行函数 Ft 时,它都会给我不同的 结果.....似乎在函数内,在for循环的每次迭代中,调用r一次,它给出一次随机数......但当我调用函数时不固定初始随机数......怎么能我修复它? 在 Ft 函数中使用 b=copy(r) 然后调用 b 怎么样? 谢谢

【问题讨论】:

    标签: python random


    【解决方案1】:

    您的意思是您希望每次运行函数时对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)])
    

    【讨论】:

    • 感谢您的回答,非常有帮助!但是我不太明白 100 是什么意思?
    • 奇怪的是,100 只是一个随机数。为确保random 函数返回相同的序列,您需要每次将相同的值传递给seed(),但实际值本身无关紧要。 100恰好是第一个想到的。如果我想得更多,我可能会选择 42 岁。
    【解决方案2】:

    我认为您的意思是“列表”而不是“数组”,当您确实不需要时尝试使用函数。如果我理解正确,您想编辑随机浮点数列表:

      import random
      r=[random.uniform(-R,R) for x in range(3)]
      def ft(r):
          for i in range(len(r)):
              r[i]=???
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-03
      • 1970-01-01
      • 2013-09-25
      • 1970-01-01
      • 2018-10-28
      • 2020-03-11
      相关资源
      最近更新 更多