使用<random>将随机数生成限制在一个范围内

hic*_*123 1 c++ random c++11

我在C++ 11中生成随机数.当我运行我的代码

using namespace std;

static std::mt19937_64 rng;

int main() {
rng.seed(11);

    std::cout << rng() << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

它返回随机数.但是,我想将此限制为一系列数字,比如1-1000.我怎么做,使用<random>C++ 11中引入的新文件/库?

Rap*_*ptz 17

使用std::uniform_int_distribution<random>.

例:

#include <random>
#include <iostream>

int main()
{
    std::random_device rd;
    std::mt19937 gen(rd());
    std::uniform_int_distribution<int> dis(1, 1000);

    std::cout << dis(gen) << '\n';
}
Run Code Online (Sandbox Code Playgroud)

<random>头包括了很多,你可以使用其他分布.你可以在这里查看

  • @ user2581872我没有收到任何错误.您可能想要将其作为一个单独的问题. (2认同)
  • @ user2581872:多次调用:`foo = dis(gen); bar = dis(gen);` (2认同)