gpt4 book ai didi

c++ - 现实程序中来自 c++ 库的随机数生成器

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:18:19 27 4
gpt4 key购买 nike

我正在了解这个库,它在很多方面改进了旧的 rand 和 srand。但是对于 rand,很明显只有一个随机数生成器在使用 rand 时被调用和更新,无论它在您的程序中的何处。使用新方法时,我不确定如何以良好的风格有效地模仿这种行为。例如,如果我想要掷骰子,并且模仿在主过程中编写的在线示例,我用这样的方法编写了一个对象:

class foo{
public:
float getDiceRoll(){
std::random_device rd;
std::default_random_engine e1(rd());
std::uniform_int_distribution<int> uniform_dist(1, 6);
return uniform_dist(e1);
}
}

这看起来很糟糕,因为每次你想掷骰子时都会重新创建引擎。这有点人为的情况,但在大型程序中,您将不得不将随机数生成器的声明放在某处。作为第一次尝试使用,我只希望所有随机数都有一个生成器,就像过去一样。实现这一目标的最佳方法是什么?网上很容易获得的例子都是直接写到主程序中的,所以他们没有回答这个基本问题。 我想不出有什么不像用大锤敲碎坚果那样的。任何帮助都会很棒。

最佳答案

对于像这样的微不足道的情况,我会将它们全部设置为 static 而不必担心太多。并且肯定会返回一个 int!

int getDiceRoll() {
static std::random_device rd;
static std::default_random_engine gen(rd());
static std::uniform_int_distribution<int> dis(1, 6);

return dis(gen);
}

关于c++ - 现实程序中来自 c++ <random> 库的随机数生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33420781/

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