程序开始时调用一次srand(time(NULL))初始化“随机数种子”,然后使用rand()即可,产生的随机数在闭区间 [0 , RAND_MAX] ,RAND_MAX至少为32767(2^15-1),是个const量,可以直接打印出来。
#include<bits/stdc++.h>
using namespace std;
int main(){
cout<<RAND_MAX<<endl;
srand(time(NULL));
for(int i=0;i<10;i++){
cout<<rand()<<ends;
}
}
如何产生[0,n]之间的随机数呢?如果n<=RAND_MAX,直接用rand()%n可产生区间[0,n-1]的一个随机数,如果n>RAND_MAX,可以可以将rand()除以RAND_MAX,得到[0,1]之间的随机实数,扩大n倍后四舍五入,得到[0,n]之间均匀整数,可满足一般要求。
#include<bits/stdc++.h>
using namespace std;
int main(){
srand(time(NULL));
int n=1000000;
for(int i=0;i<10;i++){
int x=((double)rand()/RAND_MAX*n+0.5);
cout<<x<<ends;
}
}