#include <stdio.h>
#include <stdlib.h>
#include <time.h>
double distance(double x,double y);
int main()
{
int i,j,count=0;
double x,y,r=1;
srand(time(NULL));
for(j=100;;j+=j)
{
for(i=0;i<j;i++)
{
x=(double)rand()/(double)RAND_MAX;
y=(double)rand()/(double)RAND_MAX;
if(distance(x,y,r)<(r*r))
count++;
}
printf("파이값 : %lf
",4*count/(j*r*r));
}
}
double distance(double x,double y,double r)
{
double result=((x-r)*(x-r)+(y-r)*(y-r));
return result;
}
몬테카를로로 100번,200번,400번...이렇게해서 원주율구하는 코드인데 3.14가 안나오고 6.28이 나옵니다...
연산자 우선순위문제라고하시던데 무슨소린지 모르겠습니다... 힌트 조금만더주세요...
신택스 하이라이팅 해오세요.
ㄴ해왔습니다!
간단하네요 2로 나누세요
2로나누면되는건 알겠는데 왜 두배로 나오는지 모르겠어요...
계산식 잘봐야한다고요.. 내적 횟수를 구해야하는데 누적 되잖아 연산식도 엉망이고, 몬테카를로 특성 상 확률론적으로 연산줄이기 위해서 4등분 혹은 8 ~ 16등분까지도 해서 계산을 해야 적은 연산으로 정확한 근사값을 구하는데 그것도 아니고 ...
내가 교수였으면 B도 안줬어 ....
ㄴ와 덕분에 해결했습니다 감사합니다! 열심히공부하겠습니다 ㅠ
님아 count는 계속 누적되는데, j도 누적이 되어야 하지 않을까요..? j가 100, 200, 300 이렇게 가면 안되고 100 300 700 ... 이렇게 가야할듯 싶은데요?
ㄴ 네네 그게문제더라고요... 답변 감사합니다!