我现在尝试做4位数的随机数
class PasswordGuessingGame {
private:
int number = rand() % 9000 + 1000;
public:
int getNumber() {
return number;
}
};
但得到没有意义的随机数可以有人帮助我吗?我是新手。
答案 0 :(得分:6)
欢迎使用新的C ++标准库!
最好的方法是使用
#include <random>
std::random_device rd;
std::mt19937 mt(rd()); // seed the Mersenne Twister generator
std::uniform_int_distribution<> dist(1000, 9999); // define the range
然后,在你的函数中,写
return dist(mt);
这将比旧rand()
具有更好的统计属性。
您的具体问题是由您在班级成员number
中存储单个图纸引起的,并反复返回该图片。
答案 1 :(得分:2)
以下是使用现代C ++随机数生成的完整示例:
#include <iostream>
#include <chrono>
#include <random>
unsigned seed = static_cast<size_t>(std::chrono::system_clock::now().time_since_epoch().count());
class PasswordGuessingGame {
private:
std::mt19937 random_engine;
std::uniform_int_distribution<size_t> random_generator;
public:
PasswordGuessingGame() :
random_engine(seed),
random_generator(1000, 9999)
{
}
int getNumber() {
return random_generator(random_engine);
}
};
int main()
{
PasswordGuessingGame game;
std::cout << "Random value: " << game.getNumber() << std::endl;
return 0;
}