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);

果断报错了。。所以构造函数是(下限,上限)。。。

posted @ 2014-04-24 21:02  Anti-Magic  阅读(396)  评论(0编辑  收藏  举报