我正在开发一个带有一些随机事件的模拟基础设施(例如,以一定概率生成输出的源)。到目前为止,我一直在使用 random.random() 函数。前任:
class source:
def output(self, x):
if(random.random()<=x):
return foo
a = []
for i in xrange(10)
a.append(source())
for i in xrange(1000):
for j in xrange(len(a)):
a[j].output()
据我了解,我的列表“a”中的所有源都将从同一个伪随机 LFSR 源中获取随机数,因此 a[0] 将获得一个样本,然后 a[1] 将获得下一个样本,然后a[2] 等。如果 random.ramdom() 生成了一个真正的随机序列,我相信这仍然会生成 10 个 iid 值子集,但是,因为我假设 python 使用 LFSR 或类似的方案,其中每个随后的样本依赖于前一个样本,取这些样本的几个子集可能是独立的,也可能不是同分布的。
我有两个问题:
- 使用我的伪代码或类似的东西我实际上得到了什么样的分布
- 如何在 python 中获取多个 iid 随机变量?
我查看了其他堆栈溢出帖子,例如这个: Generate multiple Independent random streams in python 但他们没有回答我的问题。