QT 앱을 가지고있어 스레드를 2 개 더 실행하고 있습니다.qrand에서 임의의 숫자를 생성하지 않습니다.
스레드 내부에서 qrand 함수를 사용하여 난수를 생성합니다. 다음은 숫자를 가져 오는 데 사용되는 코드입니다. 여기서 m_fluctuations max는 double입니다.
int fluctuate = qrand() % (int)(m_FluctuationMax * 100);
다음 코드를 주 스레드 및 스레드 클래스 내부에 추가하려고 시도했습니다.
QTime now = QTime::currentTime();
qsrand(now.msec());
이제 문제는 응용 프로그램이 시작될 때마다 생성되는 값이 항상 동일하다는 것입니다.
시드가 'currentTime()'에 의해 설정되기 때문에 차이가 없어야합니다.
감사
참고 사항 : qsrand()는 [스레드 로컬 저장소에 시드를 저장하기 때문에] 생성자에서 작동하지 않았습니다 (http://doc.qt.nokia.com/latest/qtglobal.html#qsrand) (각 스레드에 대해 독립적 인 값). 생성자에 호출을 넣을 때 시드는 한 스레드에서 초기화되고 다른 스레드에서 사용됩니다. 호출을'run()'메소드에 넣을 때 시드는'qrand()'를 호출하는 동일한 스레드에서 초기화됩니다. –