>백엔드 개발 >C++ >내 rand() 함수가 단일 함수 호출 내에서 동일한 값을 반환하는 이유는 무엇입니까?

내 rand() 함수가 단일 함수 호출 내에서 동일한 값을 반환하는 이유는 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-25 11:37:071040검색

Why Does My rand() Function Return Identical Values Within a Single Function Call?

함수 내에서 동일한 값을 반환하는 무작위 함수

rand() 함수가 함수 내에서 호출될 때 동일한 값을 생성하는 문제가 발생합니다. 단일 기능. 이 문제를 해결하려면 문제를 더 깊이 파고들어 해결책을 찾아보겠습니다.

문제 이해

PullOne() 함수는 std::srand(time (0)) 함수를 사용하여 난수 생성기를 초기화합니다. 이 초기화는 현재 시간을 기준으로 시드 값을 할당합니다. 그러나 함수 내에서 srand()를 호출하면 함수가 호출될 때마다 난수 생성기를 효과적으로 재설정할 수 있습니다. 이로 인해 동일한 순서의 난수가 생성됩니다.

해결책

PullOne() 내에서 진정한 난수 값을 생성하려면 난수 생성기를 한 번만 초기화해야 합니다. , 함수 호출 이전에. 이렇게 하면 함수가 호출될 때마다 고유한 난수 시퀀스가 ​​생성됩니다.

이를 달성하려면 다음과 같이 코드를 수정하면 됩니다.

// Initializing the random number generator
std::srand(time(0));

string PullOne()
{
    string pick;
    string choices[3] = {"BAR", "7", "cherries"};

    pick = choices[(std::rand() % 3)];
    return pick;
}

srand()를 초기화하여 PullOne() 외부에서 한 번만 호출되고 난수 생성기가 올바르게 시드되었는지 확인합니다. 이렇게 수정하면 PullOne()에 대한 각 호출이 완전히 무작위 결과를 생성하여 pull_1, pull_2 및 pull_3의 고유한 값을 만들 수 있습니다.

위 내용은 내 rand() 함수가 단일 함수 호출 내에서 동일한 값을 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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