我试着在此刻做的4位随机数有这个4位随机数C++
class PasswordGuessingGame {
private:
int number = rand() % 9000 + 1000;
public:
int getNumber() {
return number;
}
};
,但得到的随机数是没有意义谁能帮助我?我是新来的。
我试着在此刻做的4位随机数有这个4位随机数C++
class PasswordGuessingGame {
private:
int number = rand() % 9000 + 1000;
public:
int getNumber() {
return number;
}
};
,但得到的随机数是没有意义谁能帮助我?我是新来的。
欢迎来到新的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
中存储了单个图形,并且一再返回该图形。
这里是你的情况下,一个完整的例子,用现代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;
}
非常感谢! – lusito92
能否请您解释一下究竟是什么“无厘头”? –
你想要什么范围? '0 - 9999'?或'1000 - 9999'? – Galik
@Galik,我想他想要1000到9999之间的数字。 – Himanshu