制作一个永久变化的随机整数?

use*_*304 4 c++ random integer

如何创建一个不断变化的伪随机整数?这样,我可以输入:

cout << randomInt << endl;
cout << randomInt << endl;
cout << randomInt << endl;
Run Code Online (Sandbox Code Playgroud)

该程序将返回如下内容:

45.7
564.89
1.64
Run Code Online (Sandbox Code Playgroud)

(我不确定这是否有任何意义.)

Pet*_*ood 8

创建一个表示随机数的类:

class Random {
};
Run Code Online (Sandbox Code Playgroud)

过载operator<<:

std::ostream& operator<<(std::ostream& os, const Random& random) {
    return os << generate_random();
}
Run Code Online (Sandbox Code Playgroud)

用于:

int main() {
    Random random;
    std::cout << random; 
    std::cout << random; 
    std::cout << random; 
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

显然,你需要实施generate_random.

  • 也许将转换运算符实现为`int`会更好? (2认同)

Som*_*ude 5

使用新的C++ 11伪随机数生成类:

#include <random>
#include <iostream>
int main()
{
    std::random_device rd;
    std::mt19937 gen(rd());
    std::uniform_int_distribution<> dis(1, 6);
    for(int n=0; n<10; ++n)
        std::cout << dis(gen) << ' ';
    std::cout << '\n';
}
Run Code Online (Sandbox Code Playgroud)

以上模拟了十个骰子卷.

如果您想要浮点值而不是整数,请使用std::uniform_real_distribution而不是std::uniform_int_distribution.