Computer >> 컴퓨터 >  >> 프로그램 작성 >> C 프로그래밍

C/C++에서 정규 분포에 따라 난수 생성

<시간/>

여기에서 정규 분포를 따르는 난수를 생성하는 방법을 살펴보겠습니다. 일반 랜덤의 경우 공식은 아래와 같습니다.

𝑧 =√−2 ln 𝑥1 cos (2𝜋𝑥2 )

여기 x1 및 x2 무작위로 선택됩니다.

예시

#include #include #include #include  네임스페이스 사용 std;double rand_gen() { // 균일하게 분포된 임의 값 반환 return ( (double)(rand()) + 1. )/( (double)(RAND_MAX) + 1. );}double normalRandom() { // 정규 분포의 임의 값을 반환합니다. double v1=rand_gen(); 이중 v2=rand_gen(); return cos(2*3.14*v2)*sqrt(-2.*log(v1));}main() { 이중 시그마 =82.0; 이중 Mi =40.0; for(int i=0;i<20;i++) { 더블 x =normalRandom()*sigma+Mi; cout <<" x =" < 

출력

<미리>x =1.91628x =57.0448x =51.4348x =53.5612x =-83.8511x =-28.9197x =-28.9197x =-76.0576x =.5 6 =8 =62.1435x =6 =62.1435x =6 =23.9x =-87 =-87.0 x =40.7563x =90.1091x =16.9218x =-36.9178x =135.969x =56.8888