함수 내에서 동일한 값을 반환하는 무작위 함수
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!