1 随机数
1.1 rand 函数 :c语言提供的可以随机生成随机数的函数
int rand ( void ) ;
注意 :使用时需要包含头文件 : stblib.h
例如 :
#include <stdio.h>
#include <stdlib.h>
int main ()
{
int rand ();
printf("%d",rand);
return 0;
}
但是当运行这个代码时会发现,多次生成随机数的值是相同的,
这是因为rand 函数生成的随机数是伪随机数,之所以不是真正的随机数,是因为rand函数要基于一个“ 种子 ”来生成数字,当种子不变时,生成的数字就不变,也就是伪随机数。
要想让它的种子变化,生成真正的随机数,就要引进一个一直在变化的量.
1.2 srand 函数 :c语言又提供了srand 函数用来初始化随机数的生成器
void srand (unsigned int seed );
程序在调用rand 函数之前先调用srand 函数,通过srand 的seed来设置rand 函数的种子
1.3 time 函数 :时间是时刻在变化的,如果我们可以将时间作为种子就可以得到,一个一直在变化的随机数
time_t time (time_t* timer);
time函数会返回当前日历的时间,其实返回的是1970年1月1日0时0分0秒到现在程序运行时间之间的差值,单位是秒。
time 函数返回的是time_t类型的, time_t类型实质上是32或64位的整型类型。
time函数的参数timer如果是非NULL的指针的话,函数会将这个返回的差值放在timer指向的内存中带回去 , 如果是NULL就只会返回这个时间的差值,time 函数返回的这个时间差也叫做“ 时间戳"
注意 : time 函数使用时要包含头文件time.h
掌握了以上的知识我们就可以进行一个简单的游戏 :猜数字游戏
实例 :如下
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void game ()
{
int num = 0;
int r=rand()%100+1;
scandf("%d",&num);
do
{
if (num == r)
{
printf("恭喜你,猜对啦\n”);
break;
}
else if (num >r)
{
printf("猜大啦\n”);
break;
}
else if (num<r)
{
printf("猜小啦\n”);
break;
}
}while(1);
}
void menu()
{
printf("#################\n");
printf("###开始游戏,请输入1\n");
printf("##退出游戏,请输入0\n");
}
int main()
{
int input = 0;
srand((unsigned int) time (NULL));
do
{
menu();
scanf("%d",&input);
switch(input)
{
case 1:
printf("开始游戏\n");
game();
break;
case 0:
printf(“退出游戏\n");
break;
default:
printf("输入错误,请重新输入\n")
}
}while(input);
return 0;
}