>백엔드 개발 >C++ >C 루프에서 난수 반복을 피하는 방법은 무엇입니까?

C 루프에서 난수 반복을 피하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-21 06:49:10948검색

How to Avoid Repeating Random Numbers in a C   Loop?

C 루프에서 고유한 난수를 생성하는 방법

이 코드에서는 각 루프마다 다른 난수를 생성하려고 시도합니다. 반복:

for (int t = 0; t<10; t++)
{
    int random_x;
    srand(time(NULL));
    random_x = rand() % 100;
    cout << "\nRandom X = " << random_x;
}

그러나 문제는 내부에서 srand()를 여러 번 호출한다는 것입니다. 루프. 이렇게 하면 매번 동일한 시드 값으로 난수 생성기(RNG)가 초기화되어 동일한 난수 시퀀스가 ​​생성됩니다.

루프에서 정말 고유한 난수를 생성하려면 다음 단계를 따라야 합니다.

  1. 루프 외부에서 RNG를 한 번 초기화합니다. 이렇게 하면 다음을 실행할 때마다 새로운 시드 값이 사용됩니다. loop.
srand(time(NULL)); // Initialize RNG outside of loop
  1. 난수 생성을 루프 내부로 이동합니다. srand() 호출을 rand()로 바꿉니다. 이는 각 반복마다 새로운 난수를 생성합니다.
random_x = rand() % 100;
  1. RNG 재설정과 관련하여, 새로운 시드 값으로 srand()를 호출하면 RNG가 재설정됩니다. 초기화. 루프 내에서 또는 RNG를 재설정해야 하는 프로그램의 어느 지점에서나 이 작업을 수행할 수 있습니다.

이 단계를 따르면 루프의 각 반복에서 서로 다른 난수를 생성할 수 있습니다.

위 내용은 C 루프에서 난수 반복을 피하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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