gpt4 book ai didi

c++ - 如何检测整个周期的C++随机引擎已经被消耗

转载 作者:太空狗 更新时间:2023-10-29 20:55:12 27 4
gpt4 key购买 nike

我想编写一个小型(快速)C++ 程序,它基本上“检测”std::minstd_rand0 引擎的整个周期已被消耗。换句话说,我想检测序列何时重复(并测量序列重复所需的时间)。我不关心目标分布(它可以是统一的)。

关于我应该如何进行的任何想法?我正在考虑的一种选择是创建两个 std::array 变量。在第一个 std::array 中,我会存储 std:minstd_rand0 返回的 10000 个第一个伪随机变量。然后我会继续用 10000 个变量的连续 block 填充另一个 std::array 并在每次传递 10000 个变量后比较 2 个数组的内容。一旦 2 个数组相等,我会认为整个周期已经结束。

这种方法是否明智?

最佳答案

标准随机数引擎可以相互比较——当且仅当它们具有相同的状态时它们比较相等。

因此,您可以使用以下代码轻松测量周期:

  1. 创建两个默认构造的生成器
  2. 执行一个循环,从其中一个生成器生成一个数字,并递增一个计数。
  3. 直到两个生成器再次比较相等。

至少在我对 std::minstd_rand0 的快速测试中,我得到的结果是

 2147483646

不用说,std::minstd_rand0std::mt19937 更实用(举一个明显的例子)。

关于c++ - 如何检测整个周期的C++随机引擎已经被消耗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36415088/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com