>백엔드 개발 >C++ >내 난수 생성기가 계속해서 동일한 시퀀스를 생성하는 이유는 무엇입니까?

내 난수 생성기가 계속해서 동일한 시퀀스를 생성하는 이유는 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-09 00:01:10990검색

Why Does My Random Number Generator Keep Producing the Same Sequence?

같은 순서로 재설정되는 난수 생성기

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를 사용하면 난수 생성기의 상태를 더욱 예측할 수 없게 되어 더욱 다양한 결과를 얻을 수 있습니다.

자세한 내용은 다음을 참조하세요. 리소스:

  • http://www.dreamincode.net/forums/topic/24225-random-number- Generation-102/
  • h ttp://www.dreamincode.net/forums/topic/29294-making-pseudo-random-number-generators-more-random/

위 내용은 내 난수 생성기가 계속해서 동일한 시퀀스를 생성하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.