C++实现产生随机数与相应的猜拳小游戏

c++中,产生随机数的通用方法就是调用 srand()和 rand()  函数。值得注意的是,所有程序中“产生”的随机数其实是伪随机数,本质是调用存储在计算机里的一组无序数值序列。

因此在初始化随机数种子时,如果初始化相同的种子数值,得到的“随机数”会是一样的数值。

#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
    int i;
    srand(1);
    for (i = 0; i < 10; i++)
    {
        cout << rand() << " ";
    }
}

第一次运行的结果。

C++实现产生随机数与相应的猜拳小游戏

第二次运行的结果,可以看出并不是真正意义上的随机数。

但是在运行同一次程序时,可以把这些数字看成是随机数。

二、产生随机数

关键是调用 time 函数初始化随机数种子,达到种子随变。此时需要调用 <ctime>头文件。

#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
int main()
{
    int i;
    srand((unsigned)time(NULL));
    for (i = 0; i < 10; i++)
    {
        cout << rand() << " ";
    }
    return 0;
}

第一次运行结果。

第二次运行结果,可以看成真正意义上的随机数。

当需要(0-x)的随机数时,只需要在 rand() % x 即可。

当需要(0-1)的小数随机数时,只需要 ( rand() % x ) /x 即可,其中 x 与精度有关,可取 x=100 小数后两位。

三、猜拳小游戏

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
    char x;
    int a;
    int b;
    while (1) {
        printf("请选择你要出的:\n");
        printf("A:剪刀\n");
        printf("B:石头\n");
        printf("C:布\n");
        printf("D:不玩了\n");

scanf_s("%c%*c", &x);

switch (x) {
        case 65 | 97:
            x = 4; break;
        case 66 | 98:
            x = 7; break;
        case 67 | 99:
            x = 10; break;
        case 68 | 100:
            return 0;
        default:
            printf("Error!");
            getchar();
            system("cls");
            return 0;
            break;
        }
        srand((unsigned)time(NULL));
        a = rand() % 3;
        b = (int)x + a;

printf("电脑出了");
        switch (a) {
        case 0:
            printf("剪刀\n\n"); break;
        case 1:
            printf("石头\n\n"); break;
        case 2:
            printf("布\n\n"); break;
        }

printf("你出了");
        switch (x) {
        case 4:
            printf("剪刀\n\n"); break;
        case 7:
            printf("石头\n\n"); break;
        case 10:
            printf("布\n\n"); break;
        }

printf("结果是:\n\n");
        if (b == 6 || b == 7 || b == 11)printf("你赢了!\n\n");
        if (b == 5 || b == 9 || b == 10)printf("电脑赢了!\n\n");
        if (b == 4 || b == 8 || b == 12)printf("平局!\n\n");

system("pause>nul&&cls");
    }
    return 0;
}

C++实现产生随机数与相应的猜拳小游戏

第一次。

C++实现产生随机数与相应的猜拳小游戏

第二次。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/f508a5d6fefacdc6958fde262c89bb94.html