番外篇:随机数·真

随机数函数是什么?

利用函数,生成一个特定区间内的随机大小的整数。

随机数的日常应用:

1、给题目出数据

2、打表蒙答案

3、小游戏

=============================================================

函数介绍:

因为随机数的本质是函数的应用,先介绍要用的几个函数

1、rand()//生成函数//需要<cstdlib>头文件

2、srand()//初始化函数

3、time()//获取系统时间函数 //需要 <ctime>头文件

=============================================================

实例代码:

生成一个在[ x ,y ) 区间内的随机整数

样例输入: 100 500

样例输出:一个在100和499之间的随机数。

#include<cstdio>
#include<ctime>//获取时间函数要用到
#include<cstdlib>//rand函数要用

int main()
{
	int x,y,k,t;
	scanf("%d %d",&x,&y);//区间在[x,y) 
	
	t=y-x;
	
	srand(time(0));//初始化 
	
	k=rand()%t;//获取随机数 
	
	k+=x;// 确认区间 
	
	printf("%d",k);
	
	return 0;
	
}

如果你只需要一个拿来就用的工具,恭喜你,已经获得了!!

==================后面都是废话,不用再往下看了!================

=============================================================

=============================================================

=============================================================

=============================================================

=============================================================

线

=============================================================

实例分析:

1、rand()函数其实是一个伪随机整数序列,每次产生的是0~RAND_MAX(该值与平台有关,至少为32767),之间的随机数,但其产生的随机数时伪随机数,默认随机数种子为0,所以每次重新运行程序,都会产生相同的随机数。测试代码如下

#include<cstdio>
#include<cstdlib>//rand函数要用

int main()
{
	int k;
	
	k=rand();//获取随机数 
		
	printf("%d",k);//输出 

	return 0;	
}

2、srand()//初始化函数

为了解决多次生成的时候,数字能够随机变动,需要一个每次都不同的种子,

也就是说:srand()函数参数,如果有一个每次不同的数字,它就能帮助 rand()函数;

 srand(请给我一个每次不同的数字放这里)。

为了能够获得一个每次都不同的数字,调用系统时间!

3、time()//获取系统时间函数

时间戳,指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在经过了多少秒。
在C语言中可以通过time()函数获取到当前的秒数,参数为0则函数返回值即为结果,若参数不为0则结果保存在参数中。

代码如下

#include<cstdio>
#include<ctime>//获取时间函数要用到

int main()
{
	int t=time(0);//获取当前时间秒数 
	
	printf("%d\n",t);//输出 

	int h,s,m;
	
	s=t%60;		
	m=t%3600/60;
	h=(t%(24*3600)/3600+8)%24;	

	printf("%02d:%02d:%02d\r",h,m,s);//换算回时分秒显示 
	
	return 0;
	
}

4、,有了随机函数,又有了种子,那么我们就可以生成真正意义的随机数了!

ps:由于平台的限制,范围在0到2^16之间,也就是rand()返回的值不会大于32767。

4.1 如果要生成一个 1-1000 之间的随机数,只要  rand()%1000 ;

4.2 如果要生成一个 1000-1500 之间的随机数,需要 rand()%500+1000 //在1000的基础上,加上500以内的随机数;

4.3 如果要生成一个超过32767的随机数,需要 x=rand(),然后对 x 进行适当的加法或者乘法运算;

4.4 如果要生成一个带小数的随机数,就是 int 类型和 double 类型之间的转化问题了。

到这里,您大概明白真正的随机数怎么玩了吗?

请回文章顶部拿完整代码去玩耍吧!

猜你喜欢

转载自blog.csdn.net/liusu201601/article/details/83009423