时间戳概念:当前计算机时间——计算机起始时间 1970.1.1.0.0.0? ?单位s
基于Microsoft 创建的MSDN库函数查询软件得到获取一个随机数的函数为 rand();
查询MSDN可知该函数包含在头文件<stdlib.h>中,只需调用即可实现动态的随机数生成。而单次循环的随机数生成相同,所以由于静态限制,只是在选择的过程中通过函数自行生成,本质上已经不具备随机性。
引入时间戳概念,强调时间的变动性。但是由于受时间影响,随机数的生成具备一定的规律,在短时间多频率的运行状况下,随机数生成并不具备随机性。
利用srand()function 对这个rand()设置初始值。利用一个随机数对随机数函数rand设置初始值。可以选择time()时间函数对rand设置初始值 srand((unsigned)time(NULL));通过对time采用强制类型转换 使得返回值为int类型从而对rand设置初值。
具体实现代码如下
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
void menu()//创建游戏菜单栏
{
printf("#######################\n");
printf("###1.play 0.exit###\n");
printf("#######################\n");
}
void game()
{
int ret = 0;
int i = 0;
srand((unsigned int)time(NULL));//利用时间戳设置生成随机数初始值
ret = rand();//生成随机数
printf("%d\n", ret);//打印随机生成数
if (i < ret)
{
printf("猜错了比它小\n");
}
else if (i > ret)
{
printf("猜错了比它大\n");
}
else
{
printf("猜对了\n");
break;
}
}
int main()
{
int input = 0;
do
{
menu();
printf("选择开始>>");
scanf("%d", &input);
switch (input)//判断游戏开始条件
{
case 1:
game();//游戏界面
break;
case 0:
printf("退出当前游戏"\n);
break;
default://默认未输出其它选项则自动跳出
break;
}
} while (input)//再次游戏
return 0;
}
|