クイズ大陸



履歴 検索 最新 出題

No. 11≫ No.12 最新レスです
?Another World 2006/09/04 23:09
何気に多忙になっている今日この頃
そんな大したコーディングでもないという事と、
ミスがある可能性もあるという事で、ソースを晒します。

=====

For x = 1.1 To 1.3 Step 0.02
  lngCount = 0
 For i = 1 To lngTotal
 '-- 始点決定
   px1 = Rnd: py1 = Rnd: pz1 = Rnd
 '-- 終点決定
  px2 = px1 + (Rnd * x)
  pxd = px2 - px1
  py2 = py1 + (Rnd * Sqr((x ^ 2) - (pxd ^ 2)))
  pyd = py2 - py1
  l = Sqr((pxd ^ 2) + (pyd ^ 2))
  pz2 = IIf(x - l = 0, pz1, pz1 + Sqr((x ^ 2) - (l ^ 2)))
 '-- 座標変換
  px2 = Int(px2): py2 = Int(py2): pz2 = Int(pz2)
  If (px2 Or py2 Or pz2 = 1) Then
   lngCount = lngCount + 1
  End If
 Next i
'-- 結果出力
 Debug.Print x & " : " & Format$(lngCount / lngTotal, "00.0000%")
Next x

=====

変数については、座標関連とxは倍精度浮動小数点です。

寝る前に動かしてサンプルをとるという方法もありますが、
その前に少しずつ範囲を狭める作業があるので、また後日。
もし、可能であれば、どなたかお願いします。
返信 編集