gpt4 book ai didi

c++ - 随机生成器的重复初始序列

转载 作者:行者123 更新时间:2023-11-28 01:37:09 26 4
gpt4 key购买 nike

我需要生成 0 : 23 范围内的伪随机数。我正在尝试这个:

#include <iostream>
#include <cstdlib>
#include <random>
#include <ctime>


std::default_random_engine generator;
std::uniform_int_distribution<int> distribution(0,23);

unsigned int random;

random = distribution(generator);

我的问题是:每次我运行我的程序时,前三个随机数是 0、3、18。

我该如何解决这个问题,为什么会这样?

最佳答案

记住 P 代表“伪”!

PRNG 使用种子开始生成伪随机数序列。由于您自己不提供,std::default_random_engine 在默认构造时使用相同的种子。所以你每次都会得到相同的序列。

一种可行且简单的播种方法是使用 std::random_device 作为小熵的来源:

std::random_device r;
std::default_random_engine generator(r());

如果可能,r 将产生一个不确定的数字。否则,它也将是 PRNG,因此您的情况不会更糟。这不是最好的方案,但应该可以帮助您入门。

关于c++ - 随机生成器的重复初始序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48802858/

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