gpt4 book ai didi

c++ - 使用 srand 设置随机种子是现代 C++ 吗?

转载 作者:IT老高 更新时间:2023-10-28 22:25:17 30 4
gpt4 key购买 nike

对于使用 std::random_shuffle 的代码,我需要设置一个随机种子,以便生成的伪随机序列在每个程序运行中有所不同。

code example here调用

srand ( unsigned ( time (NULL) ) );

需要

#include <ctime>
#include <cstdlib>

我想知道:由于 C++11 包含对伪随机数生成的重大更新,这仍然是最新的吗?我应该使用什么来设置 std::random_shuffle 的随机种子?

最佳答案

random_shuffle 除非您提供一个,否则使用实现定义的随机数生成器。所以,不,使用 srand不一定正确。

否则它会使用您提供的生成器。您可以使用rand如果你想确定它是被使用的。

srand(seed);
std::random_shuffle(first, last, [](int n) { return rand() % n; });
// this is a biased generator
// see <http://eternallyconfuzzled.com/arts/jsw_art_rand.aspx>

但是,我建议使用新的 <random>设施而不是 rand()。示例如下。

std::default_random_engine gen(seed);

std::shuffle(first, last, gen);

关于c++ - 使用 srand 设置随机种子是现代 C++ 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14441680/

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