> 백엔드 개발 > C++ > std::random_device가 MinGW 4.8.1과 동일한 시퀀스를 생성하는 이유는 무엇입니까?

std::random_device가 MinGW 4.8.1과 동일한 시퀀스를 생성하는 이유는 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-12-30 22:26:16
원래의
482명이 탐색했습니다.

Why Does std::random_device Produce Identical Sequences with MinGW 4.8.1?

std::random_device 및 MinGW의 재현성 문제

C에서는 라이브러리는 난수에 대한 액세스를 제공합니다. MinGW 및 GCC 4.8.1 배포판에서 사용자는 여러 번의 실행에서 동일한 출력 시퀀스라는 수수께끼 같은 문제에 직면했습니다.

분석

일관되지 않은 동작으로 인해 결정성에 대한 의문이 제기되었습니다. 입니다. 문제를 이해하려면 C 참조를 참조해야 합니다.

"비결정적 소스(예: 하드웨어 장치)인 경우 std::random_device는 의사 난수 엔진 측면에서 구현될 수 있습니다. )은 구현에 사용할 수 없습니다."

이는 실제 무작위 소스를 사용할 수 없는 경우 라이브러리가 의사 난수 생성기로 대체됨을 의미합니다. 그러나 MinGW 4.8.1의 경우 의사 무작위성을 사용하더라도 출력은 일관되게 예측 가능한 것으로 보입니다.

의심되는 근거

한 가지 이론에서는 다음과 같이 가정합니다. 이 동작은 의도적인 것일 수 있습니다. 무작위가 아닌 시퀀스를 제공함으로써 라이브러리는 기본 구현의 무작위성에 대한 잠재적인 결함을 강조합니다. 이는 생성된 난수가 정말 예측 불가능하지 않을 수 있다는 점을 개발자에게 경고하는 역할을 합니다.

해결책

MinGW 4.8.1을 사용하여 진정한 무작위 시퀀스를 생성하려면 사용자 에 제공된 난수 생성기의 대체 구현을 사용하는 것을 고려할 수 있습니다. 도서관. 이러한 구현에는 출력의 예측 불가능성을 개선하기 위해 보다 정교한 알고리즘이 통합될 수 있습니다.

위 내용은 std::random_device가 MinGW 4.8.1과 동일한 시퀀스를 생성하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿