ここから本文です

ブュフォンの針で、vbaを作成したのですが、何回試行しても円周率が4になります。 ...

アバター

ID非公開さん

2019/4/618:25:22

ブュフォンの針で、vbaを作成したのですが、何回試行しても円周率が4になります。
これ以上自分では解決できない状況です。
どうかお知恵お借りできませんでしょうか。

端点を決めてそこからの平行線の距離と針のもう一方の位置関係を乱数で表しました。

Sub ボタン1_Click()
Dim i As Long
Dim n As Long '回数カウント
Dim c As Long '角度
Dim r As Long '上側距離
Dim pi As Double
pi = 4 * Atn(1) '円周率
'pi = 3.1415

For i = 1 To 100000
c = Rnd * 2 * pi '0から2πまでの乱数
r = Rnd '0から1までの乱数
If Sin(c) > 0 Then
If Sin(c) >= r Then
n = n + 1
End If
ElseIf Sin(c) < 0 Then
If -Sin(c) >= 1 - r Then
n = n + 1
End If
ElseIf Sin(c) = 0 Then
If r = 0 Then
n = n + 1
End If
End If
Next i
MsgBox 200000 / n '円周率の近似値

補足4しか出ないわけではなく、3.98から4.01のあたり動いている状況です。
漏れてしまいすみませんでした。

閲覧数:
29
回答数:
1
お礼:
250枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

hot********さん

2019/4/618:56:52

プログラムの内容はよく見てないけれど、cとrはLongではダメだと思う。

Dim c As Double
Dim r As Double

この回答は投票によってベストアンサーに選ばれました!

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる