Всем добрый вечер!

Пришёл очень важный вопрос «о каком jump ahead шла речь на сегодняшней паре»?
Я предлагал использовать встроенный в стандарт метод discard() у нужных
ГПСЧ, например, http://en.cppreference.com/w/cpp/numeric/random/linear_congruential_engine
http://en.cppreference.com/w/cpp/numeric/random/linear_congruential_engine/discard
или
http://en.cppreference.com/w/cpp/numeric/random/mersenne_twister_engine .

Выяснилась неприятная вещь. Например, стандарт не определяет, за сколько
этот discard() должен быть реализован. Потом выяснилось, что по крайней мере 
в библиотеке stdc++ , с которой всё линкует gcc и clang, схалтурили, и jump ahead
не реализовали (discard просто бежит и перебирает все значения подряд). В Майкрософте
тоже вряд ли заморачивались.

Но реализация, где jump ahead написан, есть, причём клиентский код получится
такой же (с точностью до namespace), как и с использованием стандарта (так как оттуда 
и брали), см. библиотеку 
http://www.boost.org/doc/libs/1_65_1/doc/html/boost_random.html .
При этом там discard() написан честно, см., например,
http://www.boost.org/doc/libs/1_65_1/boost/random/linear_congruential.hpp
Для mersenne_twister_engine discard тоже написан, но он будет не быстрее, чем
генерация аж 10^7 случайных величин. Поэтому среди всех
http://www.boost.org/doc/libs/1_65_1/doc/html/boost_random/reference.html#boost_random.reference.generators
возьмите генератор, который работает на движке линейных конгруентных чисел, 
например, rand48.

Если же вы не хотите скачивать и распаковывать весь огромный boost
(скачать можно тут: http://www.boost.org/users/history/version_1_65_1.html),
а хотите скачать немного, плюс ещё и почувствовать себя на переднем
краю науки, то можете загрузить семейство датчиков PCG, в котором быстрый discard
имеется, см. http://www.pcg-random.org/, https://github.com/imneme/pcg-cpp .

Насколько я понимаю, и датчики из PCG, и из boost совместимы
со стандартом, в том плане, что они соблюдают требования к интерфейсу, 
поэтому с ними можно спокойно использовать различные классы, 
получающие случайные величины, например std::normal_distribution.

Никита