몇 가지 확률적인 부분이 포함 된 시뮬레이션 환경을 만들었습니다. 나는 정규 분포, 균일 분포, 대수 정규 분포로부터 숫자를 끌어 낸다. 대부분의 경우에 이것은 잘 실행되지만 서로 100 회 시뮬레이션을하기로 결정했을 때 오류가 발생했습니다 : R6010 Abort()가 호출되었습니다. 내 콘솔에서 mersenne_twister :: seed에 대한 잘못된 인수 오류가 발생합니다. 그러나 표준 난수 생성기 rand() 만 사용하고 있습니다. 어떤 시점에서 나는 mersene_twister라고 부른다. 그래서 이것은 std :: normal_distribution의 메소드 일 것입니다.mersenne twister :: seed (C++)에 대한 인수가 잘못되었습니다.
게다가 왜 X 시드 반복은 아니고 제 시드 값이 유효하지 않은 이유를 설명하지 않습니까?
누구든지이 오류에 경험이 있습니까? 누구든지이 문제를 해결하는 방법에 대한 제안이 있습니까
P. srand (time (0))는 주 시작 부분에서 한 번만 호출됩니다. 모든 난수는 두 번째 클래스 인 "random_num"에서 생성됩니다. P.s.s이 방법이 난수를 생성하는 가장 좋은 방법은 아닐지 모르지만 제 목적으로는 충분합니다.
상기 RNG에 대한 요청과 같이 코드 : 문제 @lip
double random_num::uniform(int lb, int ub)//Generate uniformly distributed random numbers with lowerbound lb and upperbound ub
{
//srand(time(0));
double number;
number =((double) rand()/(RAND_MAX+1)) * (ub-lb+1) + lb;
return number;
}
double random_num::normal(double mean, double var) //Generate normally distributed random numbers with mean and variance
{
//srand(time(0));
default_random_engine generator (rand());
normal_distribution<double> distribution(mean, var);
return distribution(generator);
}
double random_num::lognormal(double mean, double var, double offset)
{
//srand(time(0));
random_num dummy;
double random;
random = exp(dummy.normal(mean,var))-offset; //Calculate the 3 parameter lognormal
return random;
}
당신이 이전 버전의 VS를 사용하여 위치 : 다음
과 2012 년 이전)? 디버그 모드에서 mt 초기화시 0 오류가 알려진 문제로 보입니다. – lip
표준 배포판을 인스턴스화하고 사용하는 코드 부분을 공유 할 수 있습니까? – lip
코드 부분을 추가했습니다. @lip 사용중인 VS 2010 v10.0.30319.1 알려진 문제는 무엇입니까? – Siddler