新的随机数获取途径包括两个东东,一个叫随机数引擎类,一个叫随机数分布类)。一个引擎类可以生成unsigned随机数序列,一个分布列使用一个引擎类生成指定类型、在给定范围内的随机数。
1、使用随机数引擎类(生成随机数)
随机数引擎类就是 default_random_engine 这货了,下面用它来生成一组随机数:
1
2
3
4
5
6
7
|
//注意包含头文件#include <random>
default_random_engine e;
//生成随机无符号数
for
(
int
i=
0
;i<
10
;++i)
{
cout << e() <<
" "
;
//输出随机数
}</random>
|
2、分布类型(指定随机数范围)
在回忆下,如果用rand生成一个范围在0-10之间的随机数是怎样的?代码如下:
1
2
3
4
5
6
7
8
|
//int rand_num = rand()%11;//rand获取0-10随机数的方法
default_random_engine也同样可以指定随机数范围,那就是它的好基友分布类型:uniform_int_distribution啦。用法如下:
uniform_int_distribution<unsigned> u(
0
,
10
);
//生成0到10(包含)均匀分布的随机数
default_random_engine e;
//生成随机无符号数
for
(
int
i=
0
;i<
10
;++i)
{
cout << u(e) << endl;
//u的范围范围便是e生成的随机数范围
}</unsigned>
|
为引擎设置种子的方式有两种, 一种是创建时初始化种子,另一种是调用seed来初始化 。方法如下:
1
2
3
4
5
|
default_random_engine e1;
//使用默认的种子
default_random_engine e2(
2300
);
//使用给定的种子
default_random_engine e3;
e3.seed(
2300
);
//e3使用的种子与e2是一样一样的。
|