- ベストアンサー
モンテカルロ法 円周率
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>モンテカルロ法から演習路津が求まる原理 ある面積のある部分に、適当に(一様になるように)何かを落としたとしたら、 その全体の面積の一部分に何かが落ちてくる確率は全体に落ちてくる確率(1)との比率になるけど、その比率は、その面積の部分の面積と全体の面積の比率になる ということから、逆に 1/4円とそれを包む正方形の面積の比率は、そこに適当にモノを落としてその結果から比率を求めることができるということです。
その他の回答 (3)
- revolution_2005
- ベストアンサー率37% (55/146)
学生のための応用C++Builder(長谷川洋介著、p186~)という本に、モンテカルロ法を用いた円周率のグラフィックのプログラムが載っていますので、それを参考にしてみてください。
- neKo_deux
- ベストアンサー率44% (5541/12319)
> それをグラフにする方法が分かりません。 x,yの組をテキストで出力して、Excelでグラフにするとか。
お礼
回答ありがとうございます。 テキストで出力…どうやったら出来るのでしょうか… ほんと初心者なものでスイマセン;; よかったら、出力の方法とか教えて頂きたいです。
- keroro001
- ベストアンサー率23% (71/304)
とりあえず原理だけ http://yk.i.hosei.ac.jp/seminar/javalang/exercise/exer002.html 中でプログラム書いてあるけどjavaだから、少しは流用できるかもしれません。 C言語での描画は難しいのかなぁ? ちょっとわかりません。すみません。
関連するQ&A
- セルフテストモンテカルロ法のプログラム
今、モンテカルロ法の勉強をしており、いろいろ調べていったらセルフテストモンテカルロ法というものがありました。文献をいろいろ読み、原理はなんとなくわかったのですが、C言語でのプログラミングをどのようにすればよいのか思い付きません。一例で良いのでわかる方、御回答をよろしくお願い致します。
- ベストアンサー
- C・C++・C#
- モンテカルロ法と線形合同法
モンテカルロ法の円周率を求める時に点の数を増やすと精度があがりますが、線形合同法の周期性を考慮した場合どこまで精度があげられますか?
- 締切済み
- その他(プログラミング・開発)
- モンテカルロ法
モンテカルロ法で円周率の推定値を計算することを最近習ったのですが、定積分でもそれが可能なのを知り、どうやってプログラムを組めばいいのか分からず、困っています。 例えば、定積分∫[0→1]x^2dx=1/3~0.333([0→1]というのは、積分範囲です。)をモンテカルロ法で計算すると、どういうプログラムを組めばいいのでしょうか? わかる範囲で書いてみたのですが…積分の範囲をどうやってプログラミングすればいいのか、いまいち分かりませんでした。 教えていただけると、助かります。よろしくお願いします。 RANDOMIZE INPUT n SET WINDOW -0.1, 1.1, -0.1,1.1 DRAW grid SET POINT STYLE 1 LET sumin=0 FOR i=0 TO n LET x=RND LET r=x*x SET POINT COLOR 2 ! PRINT USING "(%.####, %.####)": x,y; PLOT POINTS: x,y; NEXT i PRINT sumin;n PRINT sumin/n END
- ベストアンサー
- C・C++・C#
- fortran モンテカルロ法
モンテカルロ法により円周率πを計算するプログラムを作ったのですが、以下のプログラムでモンテカルロ法から推定された円周率piの値が実行すると大きな数字になってしまって、うまく計算できてない見たです。式に問題があるのでしょうか?教えて下さい。 rogram list1_9 implicit none real(8) x, y, pi, pi0 integer :: n, i, im = 2**20 pi0 = 2.0d0*acos(0.0d0) n = 0 do i = i, im call random_number(x) call random_number(y) if(x ** 2 + y ** 2 <= 1.0d0) n = n + 1 enddo pi = 4.0d0*dble(n)/dble(im) write(*,*) ' pi, pi0, er = ', pi, pi0, pi-pi0 end program list1_9
- ベストアンサー
- その他(プログラミング・開発)
- BASICでモンテカルロ法
モンテカルロ法で円周率の推定値を計算することを最近習ったのですが、定積分でもそれが可能なのを知り、どうやってプログラムを組めばいいのか分からず、困っています。 例えば、定積分∫[0→1]x^2dx=1/3~0.333([0→1]というのは、積分範囲です。)をモンテカルロ法で計算すると、どういうプログラムを組めばいいのでしょうか? わかる範囲で書いてみたのですが…積分の範囲をどうやってプログラミングすればいいのか、いまいち分かりませんでした。 教えていただけると、助かります。よろしくお願いします。 RANDOMIZE INPUT n SET WINDOW -0.1,1.1, -0.1,1.1 DRAW GRID SET POINT STYLE 1 LET sumin=0 FOR i=0 TO n LET x=RND LET y=RND SET POINT STYLE 2 IF y<x*x THEN SET POINT COLOR 4 LET sumin=sumin+1 END IF ! PRINT USING "(%.####, %.####)": x,y PLOT POINTS: x,y NEXT i PRINT 1*1*sumin/n END
- ベストアンサー
- その他(プログラミング・開発)
- C言語で円周率
大学でC言語で円周率を出すプログラムを作れと言われたのですが 一度作ってみたもののうまくできず さらに先生には 「もっと説明できるように作って来い」と言われてしまって困っています。 簡単なプログラミングで作りたいのですが どなたか教えていただけるとうれしいです!
- ベストアンサー
- その他(学問・教育)
- C言語、円周率の値が0.000000?
いつも大変お世話になりありがとうございます。 下記のコードを実行したところ、円周率の値が0.000000になりました。 どうしてでしょうか? アドバイスの程宜しくお願い申し上げます。 #include <stdio.h> int main(void) { double pi; printf("円周率の値はいくつですか?\n"); scanf("%1f", &pi); printf("円周率の値は%fです。\n", pi); return 0; } C:\MinGW>Sample9 円周率の値はいくつですか? 3.14 円周率の値は0.000000です。
- ベストアンサー
- C・C++・C#
- モンテカルロ法ベースのオセロプログラムを作りたいのですが
今、C言語でモンテカルロ法ベースのオセロプログラムを作っているのですが、なかなかうまくいきません。 エラー内容: ある程度書いてみたのですが、実行すると「Segmentation fault」とでてしまいます。 アルゴリズム内容: 構造体を用意して、ランダムに手を打ち勝ったら手の内容と勝ち数をカウントして、構造体に格納します。最後に一番勝ったてを指すというプログラムを書いています。 質問点: 「Segmentation fault」とでてしまいます。何故なのでしょうか? 解決方法と理由を教えてください。 プログラム内で他にも変な場所があれば、教えてください。 それと、モンテカルロ法だけだと弱いので、何かいい手はないでしょうか? 質問が多くて申し訳ございませんが、教えていただければ幸いです。 オセロのプログラムデータは添付しています。 開発環境のOSはubuntuを使用しています。Windowsの時、文字化けする可能性があります。 なにとぞよろしくお願いします。
- 締切済み
- C・C++・C#
お礼
ありがとうございます(*´∇`*) 助かります★