cls*_*udt 15 c++ random srand c++11
对于使用的代码std::random_shuffle
,我需要设置一个随机种子,以便在每个程序运行中产生的伪随机序列不同.
srand ( unsigned ( time (NULL) ) );
Run Code Online (Sandbox Code Playgroud)
这需要
#include <ctime>
#include <cstdlib>
Run Code Online (Sandbox Code Playgroud)
我想知道:由于C++ 11包含伪随机数生成的主要更新,这仍然是最新的吗?我应该使用什么来设置随机种子std::random_shuffle
?
R. *_*des 25
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>
Run Code Online (Sandbox Code Playgroud)
但是,我建议使用新<random>
设施而不是rand().示例如下.
std::default_random_engine gen(seed);
std::shuffle(first, last, gen);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
12184 次 |
最近记录: |