加入收藏 | 设为首页 | 会员中心 | 我要投稿 宁德站长网 (https://www.0593zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

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

发布时间:2021-11-12 15:56:27 所属栏目:教程 来源:互联网
导读:一、简介 c++中,产生随机数的通用方法就是调用 srand()和 rand() 函数。值得注意的是,所有程序中产生的随机数其实是伪随机数,本质是调用存储在计算机里的一组无序数值序列。 因此在初始化随机数种子时,如果初始化相同的种子数值,得到的随机数会是一样的

一、简介
c++中,产生随机数的通用方法就是调用 srand()和 rand()  函数。值得注意的是,所有程序中“产生”的随机数其实是伪随机数,本质是调用存储在计算机里的一组无序数值序列。
 
因此在初始化随机数种子时,如果初始化相同的种子数值,得到的“随机数”会是一样的数值。
 
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
    int i;
    srand(1);
    for (i = 0; i < 10; i++)
    {
        cout << rand() << " ";
    }
}
 
第一次运行的结果。
 
第二次运行的结果,可以看出并不是真正意义上的随机数。
 
但是在运行同一次程序时,可以把这些数字看成是随机数。
 
二、产生随机数
关键是调用 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("剪刀nn"); break;
        case 1:
            printf("石头nn"); break;
        case 2:
            printf("布nn"); break;
        }
 
        printf("你出了");
        switch (x) {
        case 4:
            printf("剪刀nn"); break;
        case 7:
            printf("石头nn"); break;
        case 10:
            printf("布nn"); break;
        }
 
        printf("结果是:nn");
        if (b == 6 || b == 7 || b == 11)printf("你赢了!nn");
        if (b == 5 || b == 9 || b == 10)printf("电脑赢了!nn");
        if (b == 4 || b == 8 || b == 12)printf("平局!nn");
 
        system("pause>nul&&cls");
    }
    return 0;
}
 
 
 
第一次。
 
 
 
第二次。
 
代码里x的值是考虑了不重复问题。

(编辑:宁德站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读