같은 순서로 재설정되는 난수 생성기
rand() 함수를 활용하는 프로그램을 실행할 때마다 이를 눈치챌 수 있습니다. 동일한 숫자 시퀀스를 생성합니다. 이는 난수 생성기의 시드가 초기화되지 않았기 때문에 발생합니다.
더 예측할 수 없는 결과를 생성하려면 srand((unsigned int)time(NULL))을 사용하여 난수 생성기의 시드를 설정하세요. 이 함수는 현재 시간을 시드로 사용하여 생성된 숫자에 더 많은 다양성을 제공합니다. 다음 코드를 고려하십시오.
#include <iostream> #include <cstdlib> #include <ctime> using namespace std; int random(int low, int high) { if (low > high) return high; return low + (rand() % (high - low + 1)); } int main() { srand((unsigned int)time(NULL)); cout << random(2, 5) << endl; return 0; }
rand() 함수는 본질적으로 무작위가 아니라 수학적 변환을 활용합니다. rand()에 대한 각 호출은 시드 또는 이전 난수를 기반으로 결과를 생성하여 명시적인 초기화 없이 예측 가능한 시퀀스를 생성합니다. 현재 시간과 같은 진정한 무작위 값을 갖는 srand를 사용하면 난수 생성기의 상태를 더욱 예측할 수 없게 되어 더욱 다양한 결과를 얻을 수 있습니다.
자세한 내용은 다음을 참조하세요. 리소스:
위 내용은 내 난수 생성기가 계속해서 동일한 시퀀스를 생성하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!