Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
使用C++11 #include<random>orBoost C++ Boost.Random是否可以使用一个种子以您可以选择的任意序列启动随机数生成器?
C++11 #include<random>
Boost C++ Boost.Random
换句话说,我希望能够指定数字生成器在序列中的哪个位置开始,同时使用相同的种子。
例如,如果我正在使用mt19937具有周期长度的生成器,2^19937-1我想开始在周期长度中用户指定的位置生成随机数。假设我选择 1000,生成器将从循环长度的第 1000 个位置开始。
mt19937
2^19937-1
是的。有一个成员discard(unsigned long long z)会为你做这件事。例如:
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()); }
这个程序不应该断言。