rand()函数
rand 函数返回范围为 0 到 RAND_MAX的伪随机整数。在调用 rand 之前,使用 srand 函数为伪随机数生成器设定种子。 ran函数的头文件是<stdlib.h>
RAND_MAX
我们将RAND_MAX,复制到VS编译器中,选中右击,选择转到定义,我们可以查看RAND_MAX的范围,在这里我们可以看到RAND_MAX为0x7fff,转换为10进制32767
srand()函数
srand()函数头文件是<stdlib.h> ,调用的类型是整数,srand函数里面是数字多少,rand函数就会从数字多少开始产生随机值,随机值范围是sradn函数里面的数字到32767
调用rand和srand函数
我们第一次调用后结果是365,在重新调用一次,结果还是365
当我们把srand()里面的数字换了之后,再次调用我们发现这个随机值会变
当但随机值等于200,我们第二次调用时,产生的随机值还是691
因此可见如果,srand()里面的值不变每次调用的结果都一样,为了让每次产生的随机值不一样,我们可利用time函数,让srand()里面的值随时间的变化而变化
time()函数
time()函数的头文件时<time.h>,返回类型时time_t,time_t也是一种整形类型
我们将time()函数的返回值,放到srand()函数中,这样srand()函数中的值就随时在变化,由于srand()函数中的值是整型,而time的返回值是整型。因此我们这样将time()函数放到srand()函数中
接下来,我们测试产生的随机值,我们要求产生1-100的随机值
我们发现这三次测试结果都不相同
用srand函数实现猜数字游戏
#include<stdio.h> #include<stdlib.h> #include<time.h> void menu() { printf("*************************\n"); printf("******1.play*************\n"); printf("******0.exit*************\n"); printf("*************************\n"); } void game() { int ret = rand() % 100 + 1; while (1) { printf("请输入一个数字:\n"); int guess;