首页 > 解决方案 > 随机输出高于应有的数字

问题描述

大家好,我刚刚开始编程并观看了 4 小时的 C++ 课程。我想制作自己的小游戏。我做了一个随机数,随机数比告诉的要高。

#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>

class Player{
public:
    int health = 100;

    void setHealth(int hlth){
        health = hlth;
    }

    int getHealth(){
        return health;
    }

};

Player p;

class Enemy{
public:
    void attack(){
        srand( (unsigned)time(NULL) );
        int damage;
        int crit = rand() % 10 + 1;
        if(crit == 10){
            damage = 40;
        }else{
            damage = rand() % 30 + 10; // This random
        }
        int health = p.getHealth() - damage;
        p.setHealth(health);
        std::cout << "You are getting attacked by an enemy -" << damage << " health." << std::endl;
    }

};

int main()
{
    Enemy e;
    e.attack();
    std::cout << "You have " << p.getHealth() << " hp left"<< std::endl;

    return 0;
}

有时输出高于 30 但代码是damage = rand() % 30 + 10;

我可能误解了一些东西,但我无法解释为什么会发生这种情况。

解决方案:rand() % (31 - 10) + 10;

标签: c++

解决方案


推荐阅读