本文简述 C++11 新引入的随机数生成机制
C++11 引入了两个和随机数相关的新概念, engine 和 distribution
engine
engine 是一个带状态的随机数生成器,在预定义的范围 [min, max]
以内生成随机数
engine 本身重载了 ()
运算符,使用起来类似函数
1 | default_random_engine eng; |
为了增加随机性,我们可以使用时间戳作为 engine 的随机数种子
1 | auto seed = steady_clock::now().time_since_epoch().count(); |
我们也可以使用 engine 作为 STL 库函数的随机数发生器,例如
1 | vector<int> v{1,2,3,4}; |
distribution
如果我们想要自定义生成随机数的范围,或者会生成的随机数分布有要求,则需要使用 distribution
1 | default_random_engine eng; |