每次执行循环时都尝试生成不同的随机数

时间:2015-06-25 15:25:31

标签: python loops python-3.x random simulation

SRate = [5,5,5]
Bots = 120
NQueue = 3
TSim = 100
Exp = 2
DDistance = 1
Lambda = 40 # 120/3 = 40
import random

Elist=[]
AvgSRate = 5
def Initilization(AvgSRate,Lambda,Exp):
    return float((Lambda/(AvgSRate**Exp))*(1+(1/10)*(2*(np.random.seed(-28)) - 1)))

for a in range(1,361):
    Elist.append(Initilization)

我正在尝试生成一组0到1之间随机生成的数字,因此初始化模拟时会产生小数,但是每次执行循环时它会吐出相同的值,所以当我打印Elist时,我会得到一个所有相同值的列表。该列表还有<Function Initialization at "the number">,有人可以帮我从打印列表中删除该部分只有数字。

1 个答案:

答案 0 :(得分:0)

问题是np.random.seed(-28)只是播种随机生成器[Documentation],它不返回任何随机数,以获取随机数 - np.random.rand()

示例 -

return float((Lambda/(AvgSRate**Exp))*(1+(1/10)*(2*(np.random.rand()) - 1)))

如果要为随机生成器设定种子,可以在调用调用for函数的Initilization循环之前调用它。

此后的功能应该如下 -

def Initilization(AvgSRate,Lambda,Exp):
    return float((Lambda/(AvgSRate**Exp))*(1+(1/10)*(2*(np.random.rand()) - 1)))

另外,还有一个问题是,您没有将函数调用返回的值添加到列表 - Elist.append(Initilization),只是添加了函数引用。

您需要将其更改为Elist.append(Initilization(<values for the parameter>))以调用该函数并将返回的值附加到EList