-1
program partOne
integer hit, i
real x, y, equation, finalE, compE, finalHit
parameter (pi = 3.1415926535)
c This program computes pi using the Monte Carlo method
do 10 i = 1, 1000000
x = rand()
y = rand()
equation = sqrt((x*x) + (y*y))
if (equation .LE. 1.0) hit = hit + 1
10 continue
write(*,*) 'hits = ', hit
finalHit = hit
write(*,*) 'finalHits = ', finalHit
finalE = ((finaHit/1000000) * 4)
write(*,*) 'pi = ', pi
write(*,*) 'Computed pi = ', finalE
END PROGRAM partOne
finalEが正しく計算されないのはなぜですか?すべてが正しく割り当てられているようですが、方程式が完了すると完全に間違っています。それはpiに近いはずです。fortranが正しく計算されないのはなぜですか?
更新:更新後の
program partOne
integer hit, i
real x, y, equation, finalE, compE, finalHit
parameter (pi = 3.1415926535)
c This program computes pi using the Monte Carlo method
hit = 0
do 10 i = 1, 1000000
x = rand()
y = rand()
equation = sqrt((x*x) + (y*y))
if (equation .LE. 1.0) hit = hit + 1
10 continue
write(*,*) 'hits = ', hit
finalHit = hit
write(*,*) 'finalHits = ', finalHit
finalE = ((finaHit/1000000.0) * 4.0)
write(*,*) 'pi = ', pi
write(*,*) 'Computed pi = ', finalE
END PROGRAM partOne
結果:
hits = 785524
finalHits = 785524.00
pi = 3.1415927
Computed pi = -5.21399923E+23
。しかし、それは私にあなたが得た結果を与えるものではありません。私はあなたの推薦から逃したものは何ですか?本当にお詫び申し上げます。私は今日コンピューターで長時間過ごしていて、私は何かが明らかでないと確信しています。私は本当に助けを感謝します – XXIV
私は元の質問btwに私の更新されたコードを追加しました。 – XXIV
'finalHit'は実数ですので、' finalHit/1000000'は実際の式で、 'finalHit/1000000.0'と同じです。 – francescalus