//* 몬테카를로법에 의한 면적 계산 *//
#include <stdio.h>
#include <stdlib.h>
#define NUM 1000
double rnd(void);
int main(void)
{
double x, y, s;
int i, in = 0;
for (i=0; i<=NUM; i++){
x = 2*rnd();
y = rnd();
if (x*x/4+y*y<=1)
in++;
}
s = 4.0*(2.0*in/NUM);
printf("타원의 면적 = %f\n", s);
return 0;
}
double rnd(void) /* 0 ~ 1 사이의 난수 발생 */
{
return (double)rand()/RAND_MAX;
}
// x에 0~2사이의 난수, y에 0~1사이의 난수를 대입해서 2*1의 직사각형 내부에 균일하게
퍼뜨린다. PI값 계산 알고리즘을 정확하게 이해한다면, 면적 계산은 쉽게 해결 된다.