// main.cpp : 가우시안 랜덤 알고리즘 테스트
//
 
#include "stdafx.h"
#include <windows.h>
#include "math.h"
#include <iostream>
#include <vector>
#include <algorithm>
 
using namespace std;
 
double GaussianRandom(void)
{
  double v1, v2, s;
 
  do
  {
    v1 =  2 * ((double) rand() / RAND_MAX) - 1;      // -1.0 ~ 1.0 까지의 값
    v2 =  2 * ((double) rand() / RAND_MAX) - 1;      // -1.0 ~ 1.0 까지의 값
    s = v1 * v1 + v2 * v2;
  } while (s >= 1 || s == 0);
 
  s = sqrt( (-2 * log(s)) / s );
 
  return v1 * s;
}
 
int _tmain(int argc, _TCHAR* argv[])
{
  srand(GetTickCount());
 
  vector <double> vResult(400);
 
  for (size_t i = 0; i < vResult.size(); i++)
  {
    vResult[i] = GaussianRandom();
  }
 
  sort( vResult.begin(), vResult.end() );
 
  for (size_t i = 0; i < vResult.size(); i++)
  {
    printf("[%d]   %.17f\n", i, vResult[i] );
  }
 
  return 0;
}
 
2007/05/06 05:56 2007/05/06 05:56

글 걸기 주소 : 이 글에는 트랙백을 보낼 수 없습니다

덧글을 달아 주세요