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

2024-05-15 18:03:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在开发一个包含一些随机事件的模拟基础设施(例如,以一定概率生成输出的源)。到目前为止,我一直在用随机。随机()功能。例如:

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]将获得下一个样本,然后a[2]等随机.ramdom()生成了一个真正的随机序列,我相信这仍然会产生10个iid值子集,但是,由于我假设python使用LFSR或类似的方案,其中每个后续样本都依赖于前一个样本,因此获取这些样本的几个子集可能是独立的,也可能不是完全相同的。在

我有两个问题:

  1. 我使用伪代码或类似的东西得到了什么样的发行版
  2. 如何在python中获得几个iid随机变量?在

我看了其他堆栈溢出的帖子,例如: Generate multiple independent random streams in python 但他们不回答我的问题。在


Tags: in功能sourceforoutput基础设施事件random
1条回答
网友
1楼 · 发布于 2024-05-15 18:03:16

Python stdlibrandom模块是使用Mersenne Twister实现的。来自the docs for ^{}:

Python uses the Mersenne Twister as the core generator. It produces 53-bit precision floats and has a period of 2**19937-1.

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

相关问题 更多 >