C言語

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
inc

C言語

#1

投稿記事 by inc » 15年前

を使ってモンテカルロ法を作っているのですが、円周率(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;
}

パコネコ

Re:C言語

#2

投稿記事 by パコネコ » 15年前

失礼しま~す
RAND_MAXってなんですか?

mila

Re:C言語

#3

投稿記事 by mila » 15年前

ここを
a=j/N*4.0;
こうしてみてください。
a=(double)j/N*4.0;

inc

Re:C言語

#4

投稿記事 by inc » 15年前

パコネコさん>
rand関数で返すことのできる最大値です。

milaさん>
解決しました。ありがとうございます。すごい盲点でした。。

閉鎖

“C言語何でも質問掲示板” へ戻る