4 DIGIT随机数C ++

时间:2016-02-18 08:44:36

标签: c++

我现在尝试做4位数的随机数

class PasswordGuessingGame {
private:

    int number = rand() % 9000 + 1000;
public:

    int getNumber() {
        return number;    
    }

};

但得到没有意义的随机数可以有人帮助我吗?我是新手。

2 个答案:

答案 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;
}