gpt4 book ai didi

random - 如何保存 C++0X 随机数生成器的状态

转载 作者:行者123 更新时间:2023-12-04 20:54:36 25 4
gpt4 key购买 nike

我正在玩新的 C++0X 随机库并基于这个问题:
What is the standard way to get the state of a C++0x random number generator?
似乎如果您不知道随机生成器当前状态的种子,则保存其状态的唯一方法是将生成器存储在流中。为此,我写了以下内容

#include <iostream>
#include <sstream>
#include <random>

int main(int /*argc*/, char** /*argv*/)
{
std::mt19937 engine1;
unsigned int var = engine1(); // Just to get engine1 out of its initial state
std::stringstream input;
input << engine1;
std::mt19937 engine2;
input >> engine2;
std::cout<<"Engine comparison: "<<(engine1 == engine2)<<std::endl;
std::cout<<"Engine 1 random number "<<engine1()<<std::endl;
std::cout<<"Engine 2 random number "<<engine2()<<std::endl;
}

这输出

Engine comparison: 1
Engine 1 random number 581869302
Engine 2 random number 4178893912



我有几个问题:
  • 为什么来自 engine1 和 engine2 的下一个数字不同?
  • 为什么即使它们的下一个数字不同,两个引擎的比较也相等?
  • 在我的示例中我做错了什么,保存随机引擎状态以在以后运行中获得可重复性的正确方法是什么(假设您不知道设置所需状态的种子)?

  • 谢谢你。

    最佳答案

    这对我来说似乎是一个错误。我在 libc++ 上运行了您的代码输出是:

    Engine comparison: 1
    Engine 1 random number 581869302
    Engine 2 random number 581869302

    关于random - 如何保存 C++0X 随机数生成器的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5999144/

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