首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在c++中独立生成多桩随机数序列?

如何在c++中独立生成多桩随机数序列?
EN

Stack Overflow用户
提问于 2020-06-24 06:04:56
回答 2查看 139关注 0票数 2

在我看来,种子伪随机数发生器将产生一个确定的数字序列.为了在一个程序中得到2个随机序列,需要两个具有不同种子的生成器。即:

代码语言:javascript
复制
default_random_engine gen1(1);
default_random_engine gen1(2);
uniform_int_distribution<int> dist(1, 5);
for (int i = 0; i < 100; ++i)
{
    seq1[i] = dist(gen1);
    seq2[i] = dist(gen2);
}

我可以只使用一个生成器来产生两个独立的sequences?

  • should,为每个序列创建一个新的分发对象吗?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-06-24 08:03:54

我可以只用一个生成器来产生两个独立的序列吗?

好吧,是和不是。

如果来自单个生成器的序列是“真正”独立且分布相同的样本序列(因为该术语的含义实际上是有问题的)--那么您可以在生成值的序列中获取奇数元素和偶数元素,并有两个独立的序列。

现在,如前所述,PRNG只是伪随机的.这并不意味着它不是“随机的”--语言标准不要求它是确定性的。此外,它可能是使用一些热噪声,这可能不是随机的,但可能是无法区别的,由你。但是它也可能是完全确定性的,在这种情况下,给定奇数序列的一小部分,理论上可以确定偶数序列。

对于大多数对源分布没有强烈要求的目的,在实践中,您可以将奇数元素和偶数元素序列视为独立且相同分布的序列。

应该为每个序列创建一个新的分发对象吗?

可能吧。C++分布类是一个用词不当的类;它是一个“样本”类,它有一个具有特定分布特征的底层样本空间;以及operator()执行采样的地方。所以不要认为它是“一个不同的分布”-相同的分布,另一个样本空间。

票数 3
EN

Stack Overflow用户

发布于 2020-06-24 08:02:08

我可以只用一个生成器来产生两个独立的序列吗?

很可能不是。

应该为每个序列创建一个新的分发对象吗?

是。分布可能有也可能没有影响结果的附加隐藏状态。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62550311

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档