获取随机数
一、C++11 方式
- random_device 对象,他为随机引擎种子生成不确定的随机位,这对于避免产生相同的数字序列非常重要
- random engine:生成随机的 bit 流。
- distribution:生成满足用户需求的随机数
1 | std::random_device rd; |
uniform_int_distribution
:均匀分布模板类,类名字中的 int 不代表整形,而是表示整数。因为他是一个模板类,可以用 int、long、short 等整数类型来实例化。注意:随机数的范围是左闭右闭,也就是
[ ]
如果
uniform_int_distribution
使用了无参构造函数,那么其随机数的范围是:[0, numberic_limits<type>::max()]
。也就是最大值为对应实例化类型所能表示的最大值uniform_real_distribution<T>
:表示浮点数模板类,可以用 float、double 来实例化。注意:随机数的范围是左闭右开,也就是
[ )
对于
uniform_real_distribution
的无参构造函数,则是[0, 1)
二、C 语言的 random
- 使用
srand
生成种子,一般使用time(NULL)
为参数 - 调用 rand 生成随机数
1 | srand(time(NULL)); |
使用 rand_r
来生成随机数
1 | # 每次使用 rand_r 的时候需要传给该函数一个随机数种子的指针 |