【发布时间】:2021-03-01 21:26:11
【问题描述】:
我正在尝试创建一个随机变量列表wtfuns,我可以将其称为:wtfuns[i](size=1000),以返回特定随机变量的 1000 个样本的列表。为此,我使用如下 lambda 函数:
wtfuns = []
pvals = [0.3,0.5,0.7]
for p in pvals:
wtfuns.append(('bernoulli p='+str(p),lambda **x: binom(p,**x)))
for i in range(3):
print(wtfuns[i][1](size=1000).mean())
输出
0.686
0.684
0.706
也就是说,在wtfuns[:,1] 列中,我有相同的二项式随机变量,参数为 0.7。然而,
for p in pvals:
print(wtfuns[0][1](size=1000).mean())
生产
0.311
0.524
0.67
不知何故,p 值通过引用传递给 lambda 函数。到底是怎么回事?我完全糊涂了。
【问题讨论】:
-
wtfuns.append(('bernoulli p='+str(p), lambda p=p, **x: binom(p,**x)))