Masalah:
Jawapan terkini sering mencadangkan penggunaan
Pembenihan Mudah Alih dan Teliti:
Pendekatan mudah alih dan teliti untuk pembenihan mt19937 melibatkan penggunaan CSPRNG, seperti:
Contoh Kod:
#include <cstdint> #include <cstdlib> #include <fstream> size_t sysrandom(void* dst, size_t dstlen); std::uint_least32_t seed; sysrandom(&seed, sizeof(seed)); std::mt19937 gen(seed);
Linux Pengkhususan dengan getrandom:
#if defined(HAVE_GETRANDOM) size_t sysrandom(void* dst, size_t dstlen) { int bytes = syscall(SYS_getrandom, dst, dstlen, 0); if (bytes != dstlen) { throw std::runtime_error("Unable to read N bytes from CSPRNG."); } return dstlen; } #endif
Kes Khas OpenBSD:
#if defined(HAVE_GETENTROPY) size_t sysrandom(void* dst, size_t dstlen) { int bytes = getentropy(dst, dstlen); if (bytes != dstlen) { throw std::runtime_error("Unable to read N bytes from CSPRNG."); } return dstlen; } #endif
Fikiran Lain:
Atas ialah kandungan terperinci Bagaimana Saya Boleh Menjana Benih Rawak Teliti untuk mt19937 dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!