我是靠谱客的博主 朴实柚子,最近开发中收集的这篇文章主要介绍C中随机数的生成,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

首先必须新增几个头文件:#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中随机数的生成所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部