2012-11-15 3 views
4

몬테카를로 의사 난수 생성기 (PRNG)를 사용하여 대기열 유형의 시스템을 시뮬레이션합니다. 그것은 빠르기 때문에 System.Random을 사용합니다. 그러나 결과에 방해가되는 후속 드로잉 사이에 이상한 상관 관계가 있음을 알았습니다 (충분히 랜덤하지 않습니다).몬테카를로 시뮬레이션을위한 신뢰할 수 있고 빠른 의사 랜덤 넘버 생성기 (PRNG).

이제 Mersenne Twister (http://takel.jp/mt/MersenneTwister.cs)를 사용하고 있습니다. (지금까지는) 내 목적을 위해 충분히 무작위로 판명되었습니다. 그것은 50 % 더 느리지 만, 그것은 신뢰할 수있는 결과를 얻기 위해 지불 할 의향이있는 가격입니다.

.net 용 PRNG는 몬테카를로 시뮬레이션에 가장 적합합니까? 너무 느리지는 않은 안정적인 PRNG를 찾고 있습니다.

+0

* quasirandom * 숫자를 시도하십시오 (예 : 불일치가 적은 순서). https://en.wikipedia.org/wiki/Low-discrepancy_sequence –

답변

4

메르 센 트위스터는 여러 필드에서 몬테카를로 시뮬레이션과 함께 사용하기에 최적화되어 있으므로 저는 그걸 고수 할 것입니다.

성능이 문제가되고 parralell을 사용할 수없는 경우에는 XORshift 발전기를 사용해야합니다. Geroge Marsaglia의 아주 좋은 (빠른) 난수 생성기.

다음은 paper : 당신은 아니지만 암호화를 들어, 일부 몬테 카를로 또는 다른 통계 시뮬레이션을위한 좋은 빠른 PRNG 필요하면 아마 가장 좋은 건입니다

.

SO post에서 아주 간단한 포트를 찾을 수 있지만 재 작성하거나 그물에서 C# 구현을 찾기가 어렵지 않아야합니다.

+0

입력 해 주셔서 감사합니다. 나는 그 때 메르 센에 충실 할 것이다. – willem