【发布时间】:2018-03-07 04:48:57
【问题描述】:
我正在使用 OOP 创建一个基本类,当每个武器在主类中实例化时,我不知道如何为武器类型随机生成一个数字。
//Weapon.h
class Weapon {
int type;
public:
Weapon();
~Weapon();
int getType();
};
/////////////////////////////////////// ////////////////////////////
//Weapon.cpp
#include "Weapon.h"
#include <cstdlib>
#include <time.h>
Weapon::Weapon()
{
srand(time(NULL));
type = rand() % 4;
}
Weapon::~Weapon()
{
}
int Weapon::getType() {
return type;
}
/////////////////////////////////////// ////////////////////////////
//main.cpp
#include <iostream>
#include "Weapon.h"
int main() {
Weapon w1, w2, w3;
std::cout << "w1 is type #" << w1.getType() << "\n";
std::cout << "w2 is type #" << w2.getType() << "\n";
std::cout << "w3 is type #" << w3.getType() << "\n";
return 0;
}
我得到的结果是: “w1 是类型 #1” “w2 是类型 #1” "w3 是 #0 类型"
每次我在 Visual Studio 中运行程序时,都会出现相同的数字,而且它们并不是在每次程序运行时都被随机化的。我将如何实现这一目标?我似乎忘记了 c++ 的基础知识,因为这对我来说似乎很容易,但我想不通。
编辑:在 Weapon.cpp 中使用 srand,我现在可以在每次运行时随机生成。但是所有的武器都具有相同的类型值。每个实例化的武器如何具有不同的类型值?
【问题讨论】:
-
随时间播种PRNG。
srand(time(NULL)) -
@MateenUlhaq 浏览完之后,我现在每次运行都有一个随机数,但所有 3 种武器的值都相同。这将如何解决?
-
只播种一次:
srand(time(NULL));仅是main。