>백엔드 개발 >C++ >내 C rand() 함수가 계속해서 동일한 값을 반환하는 이유는 무엇이며, srand()를 사용하여 이 문제를 어떻게 해결합니까?

내 C rand() 함수가 계속해서 동일한 값을 반환하는 이유는 무엇이며, srand()를 사용하여 이 문제를 어떻게 해결합니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-19 20:47:26989검색

Why Does My C   rand() Function Keep Returning the Same Value, and How Do I Fix It Using srand()?

함수 내에서 srand() 함수 동작

C에서 rand() 함수를 사용하는 동안 동일한 함수 내에서 함수를 여러 번 호출하면 일관되게 동일한 값이 생성되는 문제가 발생할 수 있습니다. 이 문제를 해결하려면 srand() 함수의 동작을 이해하는 것이 중요합니다.

srand()란 무엇이며 왜 중요한가요?

srand() 함수는 난수 생성기를 초기화합니다. srand()를 사용하여 다시 초기화하지 않고 rand() 함수를 반복적으로 호출하면 동일한 시드에서 후속 숫자를 계속 생성하므로 예측 가능한 결과가 발생합니다.

임의성을 수정하는 솔루션

진정한 무작위성을 보장하려면 srand() 함수는 특정 함수 내에서 호출하기보다는 프로그램 시작 시 한 번만 호출해야 합니다. 이렇게 하면 시드가 한 번만 설정되어 rand() 함수가 후속 호출을 통해 진정한 무작위 시퀀스를 생성할 수 있습니다.

솔루션 적용

제공된 코드 조각에서 문제는 PullOne() 함수 내에 있습니다. srand() 함수는 rand()를 호출할 때마다 호출되므로 예측 가능한 순서와 반복되는 결과가 발생합니다. 이를 수정하려면 srand() 호출을 주 함수의 시작 부분으로 이동하세요.

int main() {
    std::srand(time(0));

    string pull_1, pull_2, pull_3;
    pull_1 = PullOne();
    pull_2 = PullOne();
    pull_3 = PullOne();

    return 0;
}

이 수정 사항을 적용하면 rand() 함수가 pull_1, pull_2에 대해 고유한 값을 생성합니다. pull_3.

위 내용은 내 C rand() 함수가 계속해서 동일한 값을 반환하는 이유는 무엇이며, srand()를 사용하여 이 문제를 어떻게 해결합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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