質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

Q&A

解決済

1回答

2274閲覧

processing で円周率を求める。

eutopia

総合スコア0

Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

0グッド

0クリップ

投稿2020/06/06 17:39

前提・実現したいこと

processingでモンテカルロ法という方法を用いた円周率を求める計算を描くところで思っていた動きはするのですが、求める円周率が5.0以上の数値を出しているので何か間違えているのではないかと思うのですが、教えていただけませんか?
以下のコードが5.0以上の円周率になってしまうコードです。

5.0以上の数値が出る問題のコード

float randomX, randomY; float x, y; float full = 0; float in_circle = 0; float wa; float pi; void setup(){ size(400, 200); } void draw(){ background(255); randomX = random(1); randomY = random(1); x = sq(randomX); y = sq(randomY); wa = x + y; if(wa >= 1){ in_circle = in_circle + 1; } pi = full / in_circle; fill(255, 0, 0); textSize(50); text(pi, 0, 100); full=full+1; }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

e-watt

2020/06/06 19:32 編集

・なぜwa>=1で *in*.circle なのでしょう ・なぜ、pi=full/in_circle なのでしょう 求めるべき値とコードを見比べましょう。 多分今のあなたは1÷(1-π/4)を求めていて、その値は5くらい(4.7くらい)です (追記:waの判定にイコールが付いてるから、実際には(1-π/4)より小さい値の逆数、つまり5以上の値が得られている訳ですね)
eutopia

2020/06/07 03:34

返信ありがとうございます。 [wa>=1 がin_circle]であったのは、円の外だと勘違いしていた時に直し忘れていたもので、直しました。 piを求める除算の順序を間違え、四倍するのを忘れていました。 [pi = 4*(in_circle / full)] 以上を修正したところ、3.14付近を数値が動くようになりました。 恐らくこれで間違いはないと思います。ありがとうございます。
e-watt

2020/06/07 04:02

うまくいったようで何よりです
guest

回答1

0

自己解決

in_circle の状態が円の外をカウントする表記になっていた。
除算の順序が間違っていた。
四分の一の円弧であったが、piを四倍をしていなかった。

修正依頼をしてくださった方、ありがとうございました。

投稿2020/06/07 03:39

eutopia

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問