关于猜数字,简单介绍一下两个函数rand和strand以及时间戳的用法。
一、猜数字游戏的规则
1.先在系统生成一个[1, 100]之间的数字用户随便输入-个整数,
2.如果用户输入的数字比系统生成的数字小提示"猜低了"
3.如果用户输入的数字比系统生成的数字大提示猜高了
4.如果相同,提示猜对了
二、猜数字游戏的基本框架和流程
1.1 创建目录函数
1.2 创建游戏函数与玩家进行交互
1.3 main函数调用rand和srand函数,并由目录选择决定游戏走向
三、rand和srand函数
猜数字需要引入随机数,所以利用rand和strand函数。
1.rand函数
3.1.1 rand函数的简介
rand()函数是Excel中产生随机数的一个随机函数。返回的随机数是大于等于 0 及小于 1 的均匀分布随机实数,rand()函数每次计算工作表时都将返回一个新的随机实数。
3.1.2 rand函数的概述
(1)语法:rand();
(2)参数:rand 函数语法没有参数;
(3)功能:返回大于等于 0 及小于 1 的均匀分布随机实数,每次计算工作表时都将返回一个新的随机实数.
3.1.3 rand()函数使用延伸
若要生成 a 与 b 之间的随机实数,应使用: rand()*(b-a)+a
如果要使用函数 rand 生成一随机数,并且使之不随单元格计算而改变,可以在编辑栏中输入“=rand()”,保持编辑状态,然后按 F9,将公式永久性地改为随机数。
例如:
v1 = rand() % 100; //生成0-99中随机数
v2 = rand() % 100 + 1; //生成0-100中随机数
v3 = rand() % 30 + 1985; //生成1985-2014中随机数
头文件:<stdlib.h>
注:详情见www.cplusplus.com—查找rand,了解更多rand函数功能与用法。
2.srand函数
3.2.1 srand函数引入的原因
srand函数是随机数发生器的初始化函数。srand和rand()配合使用产生伪随机数序列。
srand设置产生一系列伪随机数发生器的起始点,要想把发生器重新初始化,可用1作seed值。任何其它的值都把发生器匿成一个随机的起始点。rand检索生成的伪随机数。在任何调用srand之前调用rand与以1作为seed调用srand产生相同的序列。
此函数可以设定rand函数所用的随机数产生演算法的种子值。任何大于一的种子值都会将rand随机数所产生的虚拟随机数序列重新设定一个起始点。
3.2.2 rand与srand
rand 和srand
函数一:int rand(void);
功能:产生随机值,从srand (seed)中指定的seed开始,返回一个[seed, RAND_MAX(0x7fff))间的随机整数。
函数二:void srand(unsigned seed);
参数seed是rand()的种子,用来初始化rand()的起始值。
可以认为rand()在每次被调用的时候,它会查看:
1) 如果用户在此之前调用过srand(seed),给seed指定了一个值,那么它会自动调用srand(seed)一次来初始化它的起始值。
2) 如果用户在此之前没有调用过srand(seed),它会自动调用srand(1)一次。
3.时间戳
3.3.1时间戳的作用
如果想使每一次的seed调用不同,这个时候就需要时间戳。
时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。通俗的讲, 时间戳是一份能够表示一份数据在一个特定时间点已经存在的完整的可验证的数据。所以在时间不停的变化下,使得srand每次调用seed都不同。从而实现每次生成随机数列。
函数用法:
void srand (unsigned int seed);
头文件: <time.h>
注:详情见www.cplusplus.com—查找srand,了解更多srand函数功能与用法
四、代码实现
在这里插入代码片#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void game() {
printf("开始一局猜数字游戏\n");
//1、先生成一个[1,100]的随机整数
<