2013-09-30 1 views
0

내 기능을 실행할 때마다 xy 값은 실행될 때마다 동일하게 유지됩니다. default_random_engine을 잘못 사용하고 있는지 잘 모르겠습니다. dist(engine)을 사용하여 xy 값을 얻고 프로그램을 실행할 때마다 동일한 결과가 나오지 않게하려면 어떻게합니까?default_random_engine이 나를위한 값을 임의로 지정하지 않습니다

+2

'default_random_engine'에 대해 잊어 버려서 표준에 포함시키는 것은 실수였습니다. 대신에'mt19937' 또는'mt19937_64'를 사용하십시오. –

+0

몇 가지 코드를 보여주십시오. 그것 없이는 "default_random_engine을 잘못 사용했는지 여부"를 말할 수 없습니다. –

답변

0

'시드'는 의사 난수 생성기에 '임의성'을 제공하는 것입니다. 동일한 시드로 초기화하면 동일한 '임의의'패턴을 갖게됩니다.

여기에서는 항상 동일한 시드를 전달할 것입니다.

어쩌면 당신이 대신 같은 함수를 정의해야합니다 : 당신이 당신의 프로그램을 실행할 때

long double fn(long reps, default_random_engine & engine) 

는 난수 생성기의 단일 인스턴스를 선언하고 항상 다를 수 값으로 그것을 한 번 씨앗 프로그램이 시작될 때 (예 : 시스템 시간). 그런 다음 난수 생성이 필요한 함수에 생성기를 전달합니다.

+0

그래서 발전기를 통해 씨앗 1-10을 전달하려면 어떻게해야할까요? – Tyler

+0

질문에 대한 오해가 있었습니까? 처음에는 너와 똑같은 씨앗을 원하지 않았다. 어떤 씨앗을 사용하든 똑같은 순서를 얻는다는 말입니까? 아니면 10 개의 다른 씨앗을 사용하고 싶지만 프로그램을 실행할 때마다 서로 다른 씨앗을 갖고 싶습니까? – paddy

+0

죄송합니다, 분명치 않을 수 있습니다. 10 가지의 씨앗, 특히 1-10 개를 사용하고 싶습니다. – Tyler

관련 문제