Q: Но я не вижу никакой ссылки на то, как заменить генератор.
Слово "изменение" здесь не совсем подходит, потому что Вы просто создаете другой экземпляр RNG и используете его. Например, вы не можете изменить того, что возвращает thread_rng
.
Скажите, что вы хотите использовать SmallRng
. Прежде чем вы сможете создать случайные данные с ним, вы должны создать экземпляр. Есть несколько способов сделать это, from_entropy
- самый простой. В качестве альтернативы вы можете предоставить свое собственное семя с from_seed
. Обратитесь к документации для получения дополнительной информации.
После создания ГСЧ теперь вы можете генерировать случайные данные, как и в случае с thread_rng
:
let mut rng = SmallRng::from_entropy();
println!("{}", rng.gen::<u32>());
Q: Я также не вижу способа узнать, какой генератор используется при использовании thread_rng
.
Документы для состояния ThreadRng
: «ThreadRng
использует тот же PRNG, что и StdRng
для безопасности и производительности». Документы StdRng
состояния:
Алгоритм PRNG в StdRng
выбран для того, чтобы быть эффективным на текущей платформе, быть статистически сильным и непредсказуемым (то есть криптографически secure PRNG).
В настоящее время используется блочный шифр ChaCha с 20 раундами. Это может измениться, когда появятся новые доказательства безопасности и производительности шифра.