我遇到了一个问题,在我的代码中,任何人都可以提供帮助。 这是示例代码。
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一次,它给出一次随机数...但是当我调用函数时不能修复初始随机数....怎么能我修理它? 如何使用b = copy(r)然后在Ft函数中调用b? 感谢
答案 0 :(得分:10)
您是否希望每次运行该功能时都希望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 :(得分:1)
我认为你的意思是'list'而不是'array',你正在尝试在你真的不需要的时候使用函数。如果我理解正确,您需要编辑随机浮动列表:
import random
r=[random.uniform(-R,R) for x in range(3)]
def ft(r):
for i in range(len(r)):
r[i]=???