컴퓨터 엑셀 워드 포토숍 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
Previous Post PHP 프로그래밍] 실수 랜덤 난수 생성 0에서 1까지 출력, Float Random Ra...PHP 프로그래밍] 랜덤 정수 난수 발생, 1에서 10까지 생성, Random Rand i...매스매티카 Mathematica, 렌즈 화각 FOV 계산; 광학 Field of View파이썬 Python, 퍼센트 증가 감소, 백분율 인상 인하 계산; Percent Incre...자바 Java, 최소공배수 구하기 함수; LCM; Least Common Multiple매스매티카 Mathematica, 최대공약수, 최소공배수 구하기 함수; GCD LCM어안렌즈 사진 갤러리; Fisheye Lens Gallery FlickrPython 파이썬] 최소공배수 구하기 함수; LCM자바 Java, int를 unsigned 형 long으로 변환 캐스팅(Typecasting...매스매티카 Mathematica, 합계;시그마;Sigma 함수, 1에서 100까지 더하기

PHP, 정규분포 난수 생성, 가우스 분포 랜덤 발생 함수; Normal Distribution

Saturday, April 21, 2007
스폰서 링크

일반적인 난수 발생 함수는, 모든 난수들이 같은 확률로 나오는 단일분포(Uniform Distribution)의 난수를 출력합니다.

그런데 만약, 중간값이 가장 많이 나오고, 극단적인 값으로 갈수록 적게 나오는, 종 모양의 커브를 가진 정규분포(Normal Distribution) 즉, 가우스 분포(Gaussian Distribution)의 랜덤한 난수를 생성하려면 다음 예제의 gaussianRandom() 이라는 함수를 사용하면 됩니다.

가우시안 랜덤 생성 함수 예제


소스 파일명: example.php
<html>
<head>
<title>PHP Example</title>
</head>

<body>

<?php

  // 정규분포 난수 30개 출력
  for ($i = 0; $i < 30; $i++) {
    echo gaussianRandom(), "<br />\n";
  }



// 정규분포의 난수 1개 생성하여 반환하는 함수
// 평균 = 0, 표준편차 = 1
function gaussianRandom() {
  do {
    $v1 = 2 * (mt_rand() / mt_getrandmax()) - 1; // -1.0 ~ 1.0 까지의 값
    $v2 = 2 * (mt_rand() / mt_getrandmax()) - 1; // -1.0 ~ 1.0 까지의 값
    $s = $v1 * $v1 + $v2 * $v2;
  } while ($s >= 1 || $s == 0);

  $s = sqrt( (-2 * log($s)) / $s );

  return $v1 * $s;
}
?>

</body>
</html>



실행 결과 화면:
D:\Z>php example.php
<html>
<head>
<title>PHP Example</title>
</head>

<body>

-2.0845950757016<br />
-0.35979500237827<br />
0.22218742820725<br />
1.0644497497177<br />
-2.0797003781112<br />
0.62844815275418<br />
-0.087172913620228<br />
0.6749800116894<br />
-0.2902088394042<br />
-0.57489043468833<br />
1.1934244904599<br />
0.35665574667421<br />
-0.050937176200436<br />
0.91071381643465<br />
0.39313853425754<br />
-0.29876583048131<br />
-1.9499570862601<br />
-0.26122493615939<br />
-0.32481931374634<br />
-0.25033262336947<br />
-2.3331444476871<br />
-1.2430127522752<br />
0.019581623954708<br />
1.3716530253342<br />
1.1714325229861<br />
0.20364060217821<br />
-0.37612762289786<br />
1.2359605343293<br />
1.6116787156969<br />
-0.69716116108472<br />

</body>
</html>
D:\Z>
D:\Z>php example.php > out.html
D:\Z>



php example.php > out.html
이렇게 하면, 실행 결과가 out.html 이라는 파일로 저장됩니다.



일반적인 단일분포의 실수 난수 발생: ▶▶ PHP 프로그래밍] 실수 랜덤 난수 생성 0에서 1까지 출력, Float Random Rand

다른 언어로, 정규 분포 난수 구하기: ▶▶ 가우시안/가우스 랜덤/정규 분포 난수 구하기 함수 예제; C-자바-Perl-VBA; Gauss Random

정규분포 난수, 가우시안 랜덤 넘버 생성기: ▶▶ 정규분포 난수, 가우시안 랜덤 발생기; Normal Distribution Rand Generator

0 Comments:

Post a Comment

<< Home RSS 2.0 feed

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.
블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면 RSS 2.0 feed 주소를 리더기에 등록하시면 됩니다.
Categories
Previous Posts
Monthly Archives
Top