문제

저는 특별한 하드웨어를 사용하지 않고 성능이 뛰어나고 합리적으로 견고한 RNG를 찾고 있습니다.수학적 방법(메르센 트위스터 등)을 사용할 수 있고, 기계로부터 "엔트로피를 수집"할 수 있습니다.Linux 등에는 drand48() 48개의 랜덤 비트를 생성합니다.나는 32비트 이상의 무작위성을 생성할 수 있고 하위 비트가 상위 비트와 동일하게 무작위인 C++ 또는 C#에 대한 유사한 함수/클래스를 원합니다.

암호화 방식으로 안전할 필요는 없지만 C 언어를 사용하거나 C 언어를 기반으로 해서는 안 됩니다. rand() 또는 .NET System.Random.

모든 소스 코드, 소스 링크 등감사하겠습니다!실패하면 어떤 유형의 RNG를 찾아야 합니까?

도움이 되었습니까?

해결책

C++의 경우, 부스트.랜덤 아마도 당신이 찾고있는 것입니다.MT(다른 많은 알고리즘 중에서)를 지원하며 다음을 통해 엔트로피를 수집할 수 있습니다. nondet_random 수업.확인 해봐!:-)

다른 팁

Gnu 과학 도서관 (GSL)에는 매우 광범위한 RN 생성기, 테스트 하네스 등이 있습니다.Linux를 사용하고 있다면 아마도 시스템에서 이미 사용 가능할 것입니다.

Gnu 과학 도서관을 조심하세요.LGPL이 아닌 GPL에 따라 라이센스가 부여되었습니다.

다른 사람들이 언급했듯이 Boost 무작위 클래스는 좋은 시작입니다.구현은 TR1에 예정된 PRNG 코드를 준수합니다.

http://www.boost.org/doc/libs/1_35_0/libs/random/index.html http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2003/n1452.html

최신 버전의 G++ 컴파일러를 사용하는 경우 TR1 라이브러리가 이미 포함되어 있을 수 있습니다.

C++11은 Boost.random을 기반으로 하는 강력한 난수 라이브러리를 채택했습니다.품질, 속도 또는 크기 요구 사항을 충족하기 위해 다양한 알고리즘을 사용하여 다양한 난수 엔진에 액세스할 수 있습니다.품질 구현은 플랫폼이 제공하는 모든 비결정적 RNG에 대한 액세스도 제공합니다. std::random_device.

또한 특정 배포판을 생성하는 어댑터가 많이 있으므로 이러한 조작을 수동으로 수행할 필요가 없습니다(종종 잘못 수행됨).

#include <random>

Boost.Random RNG에 대한 나의 첫 번째 선택은

http://www.boost.org/doc/libs/random

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top