2010-02-13 3 views
4

일부 속도가 중요한 코드에서 베타 배포판이있는 난수를 생성해야합니다. 현재 저는 numerics4j 라이브러리의 BetaRandomVariable() 클래스를 사용하고 있습니다 -하지만 현재는 내 코드의 CPU 사용량의 약 95 %를 차지합니다!빠른 Java 베타 배포 임의 번호 생성기가 필요합니다.

누구든지 이러한 난수를 생성하는 더 빠른 방법을 권장 할 수 있습니까?

답변

2

NumPy random number generators에서 확인할 수 있습니다. 그들은 C 언어로되어 있지만 코드는 비교적 읽기 쉽고 허가 된 라이센스이므로 Java로 쉽게 포팅 될 수 있습니다. 기본 메르 센 트위스터 생성기를 포팅 할 필요가 없습니다. 자바가 표준 라이브러리에 하나씩 있으며, 숫자를 취하는 코드 만 메르 센 트위스터 형태로 만들어 베타 버전으로 변환합니다. 저는 NumPy 난수 생성기의 대부분을 D로 이식했으며 매우 효율적이라는 것을 알았습니다. 아마도 자바에서도 똑같은 것을 발견 할 것입니다.

2

많은 응용 프로그램에서 유용한 것으로 나타 났던 Mersenne Twister 알고리즘의 빠른 Java 구현은 여기에서 얻을 수 있습니다. http://www.cs.gmu.edu/~sean/research/