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

Trying to produce different random numbers every time a loop is executed

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">,有人可以帮我从打印的列表中删除该部分以仅包含数字。

问题是 np.random.seed(-28) 只是为随机生成器 [Documentation] 播种,它没有 return 任何随机数,要获得随机数使用 - np.random.rand().

例子-

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

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

这之后的函数应该是这样的-

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

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

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