C에서 Mt19937 PRNG의 간결하고 휴대 가능하며 철저한 시딩
std::random_device 및 time(NULL) 사용의 단점에도 불구하고 파종을 위해 견고하고 휴대 가능한 장치를 만드는 것이 가능합니다. 솔루션:
CSPRNG 기반 시딩
std::random_device의 제한을 피하기 위해 다음과 같은 CSPRNG를 활용할 수 있습니다.
최소 파종 기능:
다음 크로스 플랫폼 기능은 다양한 OS별 CSPRNG에 대한 최소한의 래퍼를 제공합니다.
size_t sysrandom(void* dst, size_t dstlen) { #ifdef _WIN32 // Windows CSPRNG implementation #elif defined(__linux__) // Linux CSPRNG implementation #else // POSIX CSPRNG implementation #endif }
효율적인 시딩:
sysrandom을 사용할 수 있는 경우 mt19937 PRNG 시딩 됩니다:
std::uint_least32_t seed; sysrandom(&seed, sizeof(seed)); std::mt19937 gen(seed);
추가 참고 사항:
위 내용은 다양한 플랫폼에서 C로 Mt19937 PRNG를 안전하게 시드하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!