2013-05-16 5 views
1

나는 min과 max를 받아들이고 그들 사이에 임의의 double을 반환하는 함수를 작성하려고합니다. Boost :: variate_generator를 사용하여 두 개의 double 사이의 임의의 숫자를 얻으려고했지만 문제는 각 호출에 새로운 시드를 만들어야하므로 배포를 변경할 수 없다는 것입니다. 그것은 내가 전화 할 때마다 새로운 씨앗을 만들면 Pseudo Random Number Generator의 목적을 무효화합니다.Boost :: variate_generator 배포를 재설정하는 방법은 무엇입니까?

다음과 같은 방법을 사용할 수 있습니까? 부스트가 필요하지 않습니다. 좋은 결과를 얻는 것 같습니다.

double getRandom(double min, double max); 
{ 
    return randomNumberBetweenMinAndMax; 
} 

답변

0

많은 방법이 있습니다. 기본적으로 전역 적으로 사용 가능한 일부 개체에 대한 기본 매개 변수를 사용하여 인수를 가질 수 있습니다. 생성자를 저장하는 지역적으로 범위가 지정된 정적 변수를 가질 수 있습니다. 생성기를 저장하는 파일 범위 정적 변수 (클래스에 있으면 클래스 정적과 유사)를 가질 수 있습니다. 함수가 얻는 싱글 톤 생성기를 가질 수 있습니다.

기본적으로 전역 적으로 사용 가능한 개체를 기본 매개 변수로 사용하고 있습니다. 스레드가 생성되기 전에 생성기가 스레드 안전하고 초기화하는 동안 일반적으로 스레드로부터 안전합니다.

+0

발전기의 최대 및 최소를 변경해야하는 문제를 어떻게 해결할 수 있습니까? – user947871

+0

부스트 생성기에 익숙하지는 않지만 발전기에서 [0,1] 유니폼을 생성하면 원하는 범위로 확장 할 수 있습니다. – frankc