rand()函数–C语言中用来产生随机数的函数。 rand()函数界限–随机产生一个0-0x7fff的数,即最大是32767。 rand()函数原型–int rand(void);
rand()函数
rand()
函数前都会查询是否调用了函数srand(send)
是否给send
设定了一个值,如果有就会自动调用srand(send)
来初始化一次起始值。srand(send)
,系统会自动给send
赋初始值,即srand(1)
自动调用一次。srand()函数
void srand(int send)
srand()
函数播下的种子一样的话,那么随机产生的数也是一样的,有时候为了使产生的随机数不同,会使用时间种子srand(time(NULL))
,每次产生随机数的时间不同,所以产生的随机数也不相同。srand((unsigned int)getpid())
## 使用rand()和srand()产生指定范围内的随机整数的方法
采用模除+加法的方法
因为对任意整有
0<rand() % (n-m+1) <= n-m+1
所以也存在
0+m<rand() % (n-m+1) +m <= n-m+m
因此要产生[m,n]范围内的整数,我们可以使用:
int num=rand()%(n-m+1)+m;
可以当作一个公式记录下来
我们可以写一个C让其产生100以内的10个随机整数,代码如下;
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main(){
srand((unsigned int)time(0));
int i = 0;
for(i=0;i<10;i++){
int num = rand() % 50 + 1;
printf("%d",num);
}
printf("\n");
return 0;
}
上面说到使用getpid的方法可以使种子都保持一直,所以我们使用getpid来生成固定的随机数;
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main(){
//srand((unsigned int)getpid());系统默认调用srand(1);
int i = 0;
for(i=0;i<10;i++){
int num = rand() % 50 + 1;
printf("%d",num);
}
printf("\n");
return 0;
}
学习之路,切勿浮躁!