重拾C语言 对简单猜字游戏利用随机数生成器编写

时间戳概念:当前计算机时间——计算机起始时间 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;
        }

上一篇:关于YOLOV4 dataloader的详细理解


下一篇:【系统编程】线程同步