C++ 11/Boost随机库,在循环中的指定点开始生成

pyC*_*hon 2 c++ random boost c++11

使用C++11 #include<random>或者Boost C++ Boost.Random是否可以使用一个种子以任意顺序启动随机数生成器,您可以选择?

换句话说,我希望能够在数字生成器开始的序列中具体说明,同时使用相同的种子.

例如,如果我使用mt19937具有周期长度的发生器,2^19937-1我想开始在周期长度的用户指定位置生成随机数.假设我选择1000,发电机将在周期长度的第1000个位置开始.

How*_*ant 8

是.有一个成员discard(unsigned long long z)为您这样做.例如:

#include <random>
#include <cassert>

int main()
{
    std::mt19937 e1(6492);
    std::mt19937 e2(6492);
    const int N = 1000;
    for (int i = 0; i < N; ++i)
        e1();
    e2.discard(N);
    assert(e1() == e2());
}
Run Code Online (Sandbox Code Playgroud)

该程序不应断言.

  • (1)我完全不知道'丢弃'.(2)我的答案将围绕`(6492)` (2认同)