库函数rand()
返回一个0到RAND_MAX之间的整数值
#include<cstdlib>
#include<ctime>
srand(time(0)); //设置随机种子,否则每次运行产生的随机数序列相同
v1 = rand() % 100; // v1 in the range 0 to 99
v2 = rand() % 100 + 1; // v2 in the range 1 to 100
v3 = rand() % 30 + 1985; // v3 in the range 1985-2014
通过代码方法获得一定区间内的随机值,但引入了非随机性:
假设生成最大值为16,需要获取的随机值范围为0-9,则经过rand()%10,随机生成1和11时可得1,而仅生成7时可得7,分布不均。
随机数引擎
#include<random>
#include<time>
default_random_engine e;//default_random_engine e(time(0));
e.seed(time(0)); //设置随机种子,或直接 ↑
e(); //生成1~2147483646之间的随机数
uniform_int_distribution<int> u(-10,6);
u(e); //生成-10~6之间的随机数