c++ - 随机输出高于应有的数字
问题描述
大家好,我刚刚开始编程并观看了 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;
解决方案
推荐阅读
- spring-boot - spring-data-rest:在 Repository 类中为相应 Entity 类的每个属性生成搜索方法
- css - 无法在光滑箭头中添加 FontAwesome 5
- python - 使用 SIFT 定位图像之间的对应关系
- ios - 谷歌地图中的当前位置是错误的
- ios - Swift 4.1:“在‘super.init’调用之前,自己使用的方法调用‘defaultConfiguration’”
- php - 从 android studio 连接时,在 AWS ec2 实例上的此服务器上找不到请求的 URL /var/www/android_connect
- postman - 邮递员未返回 Cosmosdb 查询指标
- arrays - 使用 Python 计算行是否包含这个和那个,然后制作结果的热图(不确定这是否是正确的术语)
- google-places-api - 谷歌地点自动完成 - 如何知道所选地点是否属于给定的州/省
- python - 如何在 Python 3.6 中将 __str__() 和 __repr__() 用于单链表?