Недавно было обсуждено в Subedit Reddit C ++, относящиеся к трудностям использования случайной библиотеки. Одна из проблем заключалась в том, как правильно заселить двигатели случайных чисел. < /P>
std::random_device r;
std::array seed;
std::generate_n(seed.data(),seed.size(),std::ref(r));
std::seed_seq seq(std::begin(seed),std::end(seed));
< /code>
Похоже, что две из основных реализаций STL делают это, выяснение типа ввода последовательности семян не является тривиально познаваемым - даже не достижимо из черт типов по внешности. Будьте больше в зависимости от определения std :: uint_least32_t < /p>
msvc (Microsoft Visual Studio Community 2022 Версия 17.14.0) < /p>
template
void seed(_Seed_seq& _Seq) { // reset sequence from seed sequence
constexpr int _Kx = (_Wx + 31) / 32;
unsigned long _Arr[_Kx * _Nx]; _If_seed_seq
{
const _UIntType __upper_mask = (~_UIntType())
Подробнее здесь: [url]https://stackoverflow.com/questions/79668364/how-to-correctly-determine-the-seed-type-for-the-various-random-number-engines-i[/url]
Недавно было обсуждено в Subedit Reddit C ++, относящиеся к трудностям использования случайной библиотеки. Одна из проблем заключалась в том, как правильно заселить двигатели случайных чисел. < /P> [code]std::random_device r; std::array seed; std::generate_n(seed.data(),seed.size(),std::ref(r)); std::seed_seq seq(std::begin(seed),std::end(seed)); < /code> Похоже, что две из основных реализаций STL делают это, выяснение типа ввода последовательности семян не является тривиально познаваемым - даже не достижимо из черт типов по внешности. Будьте больше в зависимости от определения std :: uint_least32_t < /p>
msvc (Microsoft Visual Studio Community 2022 Версия 17.14.0) < /p> template void seed(_Seed_seq& _Seq) { // reset sequence from seed sequence constexpr int _Kx = (_Wx + 31) / 32; unsigned long _Arr[_Kx * _Nx]; _If_seed_seq { const _UIntType __upper_mask = (~_UIntType())