Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

我知道是伪随机数生成啦

可以用 srand(time(0))rand() 函数生成伪随机数。然而,这个方法生成的随机数效果不是很好,也没法指定生成范围。

下面的方法可以生成指定范围的随机数。如果修改分布,还可以得到符合特定分布的随机数。

mt19937

c++11 加入。

定义一个名叫 rd 的随机数生成器(括号内为种子)。

1
2
mt19937 rd(std::chrono::system_clock::now().time_since_epoch().count());
mt19937 rd(std::random_device{}());

uniform_int_distribution

定义一个名叫 rand 的整型随机分布(括号内为上下界)。

1
uniform_int_distribution<int> rand(MN,MX);
  • 实数随机分布为 uniform_real_distribution
  • 不知道尖括号内不填对应类型会发生什么。
  • 存在正态分布等其他分布,请百度。

生成固定范围的随机整数

假设定义了如上定义的 rdrand,使用方法为:

1
rand(rd)

给小狼留言