C++ 11 笔记 (六) : 随机数
以前生成一个随机数都是这样:
1 srand(time(NULL)); 2 rand();
在C++11中,标准库中增加了随机数引擎 std::default_random_engine 这个好东西,然后我们就可以这样:
1 std::default_random_engine rand_default; 2 rand_default();
另外可以指定随机数种子,有两种方式:
std::default_random_engine rand_default(100); //构造函数指定 rand_default.seed(100); //seed成员函数指定
生成的随机数是 unsigned int 类型的。
以前生成一个分布是这样:
1 int random(int low, int high) 2 { 3 return rand() % (high - low + 1) + low; 4 }
在C++11中,标准库中增加了随机数分布引擎 std::uniform_int_distribution 这个好东西,然后我们就可以这样:
1 std::uniform_int_distribution<int> rand_uniform(1, 10); 2 rand_uniform(rand_default);
随机数分布引擎需要使用随机数引擎生成随机数。
由于我是一个充满探(dou)索(bi)精神的人,挑战了一下极限:
1 std::uniform_int_distribution<int> rand_uniform(10, 1);
果断报错了。。所以构造函数是(下限,上限)。。。