// 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;
}
//
#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;
}
덧글을 달아 주세요