2012-01-27 5 views
4

많은 randomizers가 있습니다. Some 표준형은 다소 느립니다. Some은 높은 품질과 속도를 요구합니다. Some은 고품질이라고 주장합니다. Some은 더 빠르고 더 나은 품질을 주장합니다. Some은 속도를 청구하지만 quality입니다.난수 생성기를위한 최선의 선택

내가 아는 한 가지 사실은 mwc-random이 Criterion 벤치마킹 라이브러리에서 사용되고 있으며 claims은 매우 유망한 것입니다. 나는 세 가지 범주로 최고의 발전기를 선택하는 질문을 나눌 것입니다 - 견고하고 생성 된 번호의 품질 :

  1. 가장 빠른
  2. 을 모든 발전기에 두 개 이상의 특성이 있기 때문에

  3. 가장 난수

그래서있는 어느 A는 적당한 속도로 이들 특성을 모두의 최적의 조합을 갖는 하나를 생성 한 왜?

+0

귀하의 RNG 특성에 대한 특성이 불충분하다고 주장합니다. 예를 들어 어디서나 "품질"또는 "속도"를 정의하지 않았습니다. Int를 생산하는 것이 가장 빠릅니까? 수레? 임의의 비트 문자열? 암호/보안 요구 사항에 안전하게 사용할 수 있습니까? 역 추적인가? 모든 의사 생성기가 결국 롤오버하므로 롤오버에서 어떤 일이 발생합니까? –

+0

질문에 약간의 수정을했지만 새로운 카테고리 (정수, 부동 소수점)를 추가하면 좋은 대답을 얻는 데 도움이되지 않을 것이라고 생각합니다. –

+2

나는 당신이 사용하고있는 것에 달려 있기 때문에 (3) 주어진 정보에 대해서 답할 수 없다고 생각합니다. – luqui

답변

8

나는 mwc-random에 대해서만 이야기 할 수 있습니다.

  1. 신동 II에서 Word32 당 15ns가 빠릅니다. 컴퓨터에서 얼마나 빠를지 측정하려면 벤치 마크 세트가 제공됩니다. 여전히 속도를 위해 기간을 거래하는 것이 가능합니다. Xorshift RNG는 더 빨라야하지만 2^8222 대신 2^32 또는 2^64로 더 짧아야합니다.

  2. 임의성. mwc-random은 암호 학적으로 안전하지는 않지만 임의성 테스트에서 잘 수행되는 알고리즘 MWC256 (다른 이름 : MWC8222)을 사용합니다. 특히 mwc-random은 dieharder randomness test을 전달합니다.