当前位置:  开发笔记 > 编程语言 > 正文

如何重现相同状态的基于随机的算法

如何解决《如何重现相同状态的基于随机的算法》经验,为你挑选了1个好方法。

我正在研究包含随机初始状态的算法.因此,每次运行时,此算法的输出都不稳健.这会给我带来很多麻烦,因为我收到错误的输出并想调试它以查看问题所在,因为当我再次运行它时,由于算法的随机因素,问题可能无法重新生成.我正在使用C++随机生成器如下:

    std::random_device rd;
    std::mt19937 rnd_generator(rd());
    std::uniform_int_distribution<> rnd_distribution(0, data_size - 1);

    auto get_random_index = [&](){
        return rnd_distribution(rnd_generator);
    };

我怎么能模仿这个函数生成的最后一个随机序列?例如,我可以给它一些静态种子,我可以重新输入它并获得完全相同的随机序列吗?我问,因为我认为这是常见的问题所以可能有一些好的和有效的知名方式.



1> Richard Hodg..:

保存调用结果rd()并使用它来初始化rnd_generator下一遍

例:

#include 
#include 


auto main() -> int
{
    using namespace std;

    random_device rd;
    auto seed = rd();

    for (int pass = 0 ; pass < 3 ; ++pass)
    {
        mt19937 rnd_generator(seed);
        uniform_int_distribution<> rnd_distribution(0, 9);

        for (int i = 0 ; i < 5 ; ++i)
        {
            cout << rnd_distribution(rnd_generator) << ", ";
        }
        cout << endl;
    }

    return 0;
}

示例输出:

9, 5, 3, 5, 4,
9, 5, 3, 5, 4,
9, 5, 3, 5, 4,

推荐阅读
oDavid_仔o_880
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有