1 名前:名無しさん@5周年 [2007/07/26(木) 16:15:57 ] モンテカルロ法で球の体積を求めるプログラムを作らなきゃないんだけど、だれか頼む… とりあえず、円周率を求めるヤツはこうなってる。 Sub montecario() 'monte cario simukation n = 0 hit = 0 For i = 1 To 50 For j = 1 To 100 fx = Rnd(): fy = Rnd() z = fx ^ 2 + fy ^ 2 If z <= 1 Then hit = hit + 1 Else GoTo label End If label: Next j n = n + 100 p = hit / n Cells(i, 2) = p * 4 Cells(i, 1) = n Next i End Sub
2 名前:名無しさん@5周年 [2007/07/26(木) 16:37:48 ] おっと、まずはおまいのの性別と歳を書き込め。話はそれからだw
3 名前:名無しさん@5周年 [2007/07/26(木) 16:40:01 ] 19♀、東京の大学。 情報の授業なんだけど、明日が〆切\(^о^)/ リアルに教えてww
4 名前:名無しさん@5周年 [2007/07/26(木) 20:03:11 ] >>3 聞いていない大学の場所まで言うとはあやしいぞ。 つーか、もともと1の文体がモロ♂じゃねえかw
5 名前:4 [2007/07/27(金) 01:06:42 ] でも、ヒントだけあげよう。 円: 単位円内の点から中心までの距離の2乗(x^2+y^2)が1以内 球: 単位円内の点から中心までの距離の2乗(x^2+y^2+z^2)が1以内 円: (全円の面積)/(x>0,y>0の範囲の円の面積)=4 球: (全球の体積)/(x>0,y>0の範囲の球の体積)=8
6 名前:4 [2007/07/27(金) 01:13:48 ] >>5 おっと、修正。 円: 単位円内の点から中心までの距離の2乗(x^2+y^2)が1以内 球: 単位球内の点から中心までの距離の2乗(x^2+y^2+z^2)が1以内 円: (全円の面積)/(x>0,y>0の範囲の円の面積)=4 球: (全球の体積)/(x>0,y>0,z>0の範囲の球の体積)=8
7 名前:名無しさん@5周年 [2007/07/27(金) 01:47:48 ] ほぼ俺様で1000いってやる etc6.2ch.net/test/read.cgi/entrance/1185302642/
8 名前:名無しさん@5周年 [2007/07/27(金) 10:36:42 ] てことは、もとのやつに、fz=rnd()を足して、 4かけるとこを8にすればいいのかな? それでやったら4.18くらいになったよ。 時間ないからこれで出すね。ありがとー
9 名前:4 mailto:sage [2007/07/27(金) 11:47:33 ] >>8 球の体積の正解は4/3*pi=約4.189なので、たぶんそのプログラムであってるね。 以下、正解です。 montecarloとsimulationのスペルを修正し、不必要なGoto文も削除してある。 なお、当方Excelは使わないので、動作確認はしてません^^; Sub montecarlo() 'monte carlo simulation n = 0 hit = 0 For i = 1 To 50 For j = 1 To 100 fx = Rnd(): fy = Rnd(): fz = Rnd() z = fx ^ 2 + fy ^ 2 + fz ^ 2 If z <= 1 Then hit = hit + 1 End If Next j n = n + 100 p = hit / n Cells(i, 2) = p * 8 Cells(i, 1) = n Next i End Sub
10 名前:名無しさん@5周年 [2007/07/27(金) 18:51:16 ] >>3 >19♀、東京の大学。 >情報の授業なんだけど、明日が・・・・ 情報工学の演習で、Excelで発生させた擬似乱数を使わせる時点で、その 担当教官は、まがい者認定だな。 46 :名無しさん@5周年:2007/03/31(土) 21:24:37 >>42 ”Excel の乱数は線形合同法という手法で生成しているので、周期が9 桁程度と短い上に、 乱数としても偏りがあると言われています。 Monaco の乱数は定評のあるメルセンヌ・ツイスター法で生成され、品質が非常に高い上に 周期も6000桁以上あり、高精度なシミュレーションには最適です・・・” Monaco FAQ 5.Excelの乱数は何が問題? www.msi.co.jp/monaco/faq.html#13 乱数 science6.2ch.net/test/read.cgi/sim/1100375806/46
11 名前:名無しさん@5周年 [2007/07/27(金) 19:18:13 ] >>10 2 :名無しさん:2000/01/31(月) 10:17 円周率を求めたら 3.21 になってしまったことがある。 モンテカルロ法 science6.2ch.net/test/read.cgi/sim/949251356/2-3
12 名前:4 mailto:sage [2007/07/28(土) 11:32:40 ] >>10 「以下のモンテカルロ法で円周率を求めるプログラム例を参考に モンテカルロ法で球の体積を求めるプログラムを作成せよ。 ただし、乱数は、例のような標準関数でなく、メルセンヌ・ツイスター法を用 いた関数を自分で作成して発生させること。」 課題がこんなんだったら、ほとんど誰もできんわw