如何在python中生成独立的同分布(iid)随机变量

时间:2015-06-29 22:26:45

标签: python random probability probability-theory

我正在开发一个带有一些随机事件的模拟基础架构(例如,以一定概率生成输出的源)。到目前为止,我一直在使用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源获得随机数,因此[0]将得到一个样本,然后[1]将得到下一个如果random.ramdom()生成一个真正的随机序列,我相信这仍然会生成10个iid子集值,但是,因为我假设python使用LFSR或类似的方案在每个后续样本取决于前一个样本的情况下,采用这些样本的若干子集可能是也可能不是独立且相同的分布。

我有两个问题:

  1. 我使用我的伪代码或类似的东西实际获得了什么样的分发
  2. 如何在python中获得几个iid随机变量?
  3. 我查看了其他堆栈溢出帖子,例如: Generate multiple independent random streams in python 但他们没有回答我的问题。

1 个答案:

答案 0 :(得分:2)

Python stdlib random模块使用Mersenne Twister实现。来自the docs for random:

  

Python使用Mersenne Twister作为核心生成器。它产生   53位精度浮点数,周期为2 ** 19937-1。

我相信这符合您的独立性要求。查看the Wikipedia article,,特别是“ k -distribution”属性中的部分。

相关问题