C2007. 5. 30. 22:36
 

//*  몬테카를로법에 의한 면적 계산  *//

 

#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값 계산 알고리즘을 정확하게 이해한다면, 면적 계산은 쉽게 해결 된다.

Posted by 타망

댓글을 달아 주세요