>백엔드 개발 >C++ >C에서 무작위 부동 소수점 숫자를 효과적으로 생성하려면 어떻게 해야 합니까?

C에서 무작위 부동 소수점 숫자를 효과적으로 생성하려면 어떻게 해야 합니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-25 14:24:09393검색

How Can I Generate Random Float Numbers in C   Effectively?

C에서 임의의 부동 소수점 숫자 생성

특정 딜레마의 경우 rand의 출력을 상수로 나누는 것은 임의의 부동 소수점을 생성하기 위한 강력한 접근 방식이 아닙니다. 학습 목적으로 대략적인 결과를 제공할 수 있지만 신뢰할 수 있는 난수가 필요한 심각한 애플리케이션에는 적합하지 않습니다.

수학적 연산을 사용하여 무작위 부동 소수점 생성

고정밀도를 생성하려면 C의 임의 부동 소수점은 C 표준 라이브러리에서 제공하는 기능을 활용합니다. 예를 들어, 0.0과 1.0 사이의 임의 부동 소수점을 생성하려면 다음 코드를 사용할 수 있습니다.

float r = static_cast<float> (rand()) / static_cast<float> (RAND_MAX);

임의 간격 내에서 임의 부동 소수점을 생성해야 하는 경우 그에 따라 수식을 조정하세요.

  • 0.0부터 X:

    float r2 = static_cast<float> (rand()) / (static_cast<float> (RAND_MAX/X));
  • LO에서 HI로:

    float r3 = LO + static_cast<float> (rand()) /( static_cast<float> (RAND_MAX/(HI-LO)));

사용 진정한 난수 생성기

정규 분포를 따르는 진정한 난수가 필요한 시나리오에서는 다음과 같은 고급 방법론을 사용하는 것이 좋습니다.

  • 메르센 트위스터
  • 선형 피드백 이동 등록(LFSR)
  • Blum Blum Shub

난수 생성기 시드

rand()를 활용하기 전에 srand()를 호출하여 난수 생성기를 초기화해야 합니다. 일반적으로 이는 다음을 통해 수행됩니다.

srand (static_cast<unsigned> (time(0)));

적절한 헤더를 #include해야 합니다.

  • rand 및 srand
  • 시간

이러한 지침을 준수하면 시뮬레이션에서 데이터 분석에 이르기까지 다양한 애플리케이션에 대해 C에서 무작위 부동 소수점을 효과적으로 생성할 수 있습니다.

위 내용은 C에서 무작위 부동 소수점 숫자를 효과적으로 생성하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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