C言語
Posted: 2010年6月23日(水) 20:36
を使ってモンテカルロ法を作っているのですが、円周率(pi)が0.00000と表示されて
うまく表示できません。どこが間違っているのか教えてください。
関数プロトタイプで作れと言われているので変な形なのはご了承ください。
#include <stdio.h>
#include <stdlib.h>
#define N 10000
void print_result(int N_total,int N_in, double pi);
void print_result(int N_total,int N_in, double pi)
{
printf("0.0~1.0の乱数(x,y)%d組の内、\n (x*x+y*y)<1.0となるのは%d組なので、\n
モンテカルロ法により円周率は%lfとなる。",N_total,N_in,pi);
return;
}
int main(void)
{
double a,b,i,x,y;
int j,is_in;
j=0.0;
for(i=0;i<=N;i++)
{
x=rand()/(RAND_MAX+1.0);
y=rand()/(RAND_MAX+1.0);
if((x*x+y*y)<1.0)
{
j+=1.0;
}
else
{
is_in=0.0;
}
}
a=j/N*4.0;
print_result( N ,j, a);
return 0;
}
うまく表示できません。どこが間違っているのか教えてください。
関数プロトタイプで作れと言われているので変な形なのはご了承ください。
#include <stdio.h>
#include <stdlib.h>
#define N 10000
void print_result(int N_total,int N_in, double pi);
void print_result(int N_total,int N_in, double pi)
{
printf("0.0~1.0の乱数(x,y)%d組の内、\n (x*x+y*y)<1.0となるのは%d組なので、\n
モンテカルロ法により円周率は%lfとなる。",N_total,N_in,pi);
return;
}
int main(void)
{
double a,b,i,x,y;
int j,is_in;
j=0.0;
for(i=0;i<=N;i++)
{
x=rand()/(RAND_MAX+1.0);
y=rand()/(RAND_MAX+1.0);
if((x*x+y*y)<1.0)
{
j+=1.0;
}
else
{
is_in=0.0;
}
}
a=j/N*4.0;
print_result( N ,j, a);
return 0;
}