如何修复Random产生的价值?

use*_*037 4 python random

我遇到了一个问题,在我的代码中,任何人都可以提供帮助.这是示例代码.

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
Run Code Online (Sandbox Code Playgroud)

然而我发现在python shell中,每次运行函数Ft时,它都会给我不同的结果.....似乎在函数内,在for循环的每次迭代中,调用r一次,它给出一次随机数...但是当我调用函数时没有修复初始随机数....我该如何解决?如何使用b = copy(r)然后在Ft函数中调用b?谢谢

Sim*_*lan 11

你的意思是你希望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)])
Run Code Online (Sandbox Code Playgroud)

  • 奇怪的是,"100"只是一个随机数.为了确保`random`函数返回相同的序列,你需要每次都将相同的值传递给`seed()`,但实际值本身是无关紧要的.100恰好是第一个浮现在脑海中的人.如果我一直在想更多,我可能已经去了42. (3认同)