概述
首先必须新增几个头文件:#include、#include,然后在main函数开头加一句“srand((unsigned)time(NULL))”,这个语句将生成随机数的种子,然后使用ranf()函数生成随机数。实例如下:
#include<cstdio>
#include<cstdlib>
#include<time.h>
int main(){
srand((unsigned)time(NULL));
for(int i=0;i<10;i++){
printf("%d ",rand());
}
return 0;
}
同时rand()函数只能生成【0,RAND_MAX】范围内的整数,RAND_MAX是cstdlib的一个常数,不同环境中有所不同,我看的书是32767。
如果想要输出固定范围【a,b】的随机数,需要使用rand()%(b-a+1)+a,显然rand()%(b-a+1)的范围是[0,b-a],再加上a就是[a,b],如下生成[0,1]与[3,7]范围内的数:
#include<cstdio>
#include<cstdlib>
#include<time.h>
int main(){
srand((unsigned)time(NULL));
for(int i=0;i<10;i++){
printf("%d ",rand()%2);
}
printf("n");
for(int i=0;i<10;i++){
printf("%d ",rand()%5+3);
}
return 0;
}
但是这几种方法只能生成边界小于32767,如果想要更大可以采用多次生成rand随机数,然后用位运算拼接起来(或者直接让两个随机数相乘),另一种思路就是先用rand()生成一个[0,RAND_MAX]的随机数,然后用这个数除以RAND_MAX,这样就会得到一个[0,1]范围内的浮点数。我们只需要用这个浮点数乘以范围长度(b-a+1),再加上a即可,即(int)((double)rand()/32767*(b-a+1)+a),相当于这个浮点数就是[a,b]范围内的比例位置。比如生成[10000,60000]范围内的随机数:
int main(){
srand((unsigned)time(NULL));
for(int i=0;i<10;i++){
printf("%d ",(int)(round(1.0*rand()/RAND_MAX*50000+10000)));
}
return 0;
}
最后
以上就是朴实柚子为你收集整理的C中随机数的生成的全部内容,希望文章能够帮你解决C中随机数的生成所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复