Подход 3 может работать, так как начальное число для любого PRNG может быть таким же, как и состояние этого PRNG (например, Mersenne Twister имеет длину состояния 19968 битов или 624 * 32 битов, поэтому может принимать начальное число до столько битов - это не ограничено 32 или 64 битами, как это практикуется со многими API, которые реализуют Mersenne Twister). Однако вы должны использовать PRNG несвязанного дизайна с Mersenne Twister, такой как PCG, чтобы посеять этот PRNG, а затем вытянуть целое число 624, как вы предлагаете. (Или, если вам не требуются воспроизводимые результаты, или если вы сохраните 624-целые начальные числа, сгенерированные таким образом, вы можете использовать криптографический ГСЧ, такой как os.urandom()
или secrets.SystemRandom
, для рисования этих начальных чисел.) Моя статья о RNG предлагает несколько PRNG с различным дизайном.