C++如何产生随机数?
rand()函数可以返回一随机数值, 范围在0至RAND_MAX 间。RAND_MAX定义在stdlib.h, 其值为2147483647。
#include <iostream>
#include<cstdlib>
//#include <ctime>
using namespace std;
int main()
{
//srand((int)time(0)); // 产生随机种子 把0换成NULL也行
int a = rand() % 100 + 1;
printf_s("%d ", a);
int b= rand() % 100 + 1;
printf_s("%d",b);
return 0;
}
要注意的是,再次运行程序输出的结果也还是一样的,那么为了使每次得到的运行结果不一样,可以使用srand()函数。
srand()可用来设置rand()产生随机数时的随机数种子。通过设置不同的种子,我们可以获取不同的随机数序列。可以利用srand((int)(time(NULL))的方法,利用系统时钟,产生不同的随机数种子。不过要调用time(),需要加入头文件< ctime >。
#include <iostream>
#include<cstdlib>
#include <ctime>
using namespace std;
int main()
{
srand((int)time(0)); // 产生随机种子 把0换成NULL也行
int a = rand() % 100 + 1;
printf_s("%d ", a);
int b= rand() % 100 + 1;
printf_s("%d",b);
return 0;
}
//运行结果1
88 76
//运行结果2
47 39
如果要产生某一区间的随机数,下面有一个通用公式:
区间都闭为 [a,b]使用 a+(rand()%(b-a+1));
a表示从a开始,b-a+1表示区间的长度
如果是半开半闭区间(a,b] 使用 a+1+(rand()%(b-a);