Подтвердить что ты не робот

Достичь такой же последовательности случайных чисел в разных ОС с одним и тем же семенем

Есть ли способ достичь такой же последовательности случайных чисел в разных операционных системах с тем же семенем? Я пробовал этот код:

std::default_random_engine engine(seed);
std::uniform_int_distribution<int> dist(0, N-1);

Если я запустил этот код на одной машине несколько раз с тем же самым семенем, последовательность dist (engine) будет одинаковой, но в разных операционных системах последовательность будет другой.

4b9b3361

Ответ 1

Да, есть, но вам нужно другое или сказать точно, тот же PRNG на каждой платформе. std::default_random_engine engine представляет собой реализацию PRNG. Это означает, что вы не можете получить тот же PRNG на каждой платформе. Если у вас нет одного и того же, ваши шансы на получение одной и той же последовательности довольно низки.

Что вам нужно, это что-то вроде std::mt19937, которое требуется для того же вывода для одного и того же семестра. На самом деле все определенные генераторы в <random> помимо std::default_random_engine engine будут выдавать тот же результат при использовании одного и того же семпла.

Другая вещь, которую вам нужно знать, заключается в том, что std::uniform_int_distribution также является реализацией. Формула, которую она должна использовать, определяется, но способ ее достижения остается до разработчика. Это означает, что вы не можете получить точный результат. Если вам нужна переносимость, вам нужно будет раскрутить свой собственный дистрибутив или получить третью сторону, которая всегда будет одинаковой независимо от платформы.