我试图编写一个FORTRAN 90程序,它使用随机数计算Pi。这些是我知道我需要采取的步骤:
这就是我所拥有的:
program pi
implicit none
integer :: count, n, i
real :: r, x, y
count = 0
CALL RANDOM_SEED
DO i = 1, n
CALL RANDOM_NUMBER(x)
CALL RANDOM_NUMBER(y)
IF (x*x + y*Y <1.0) count = count + 1
END DO
r = 4 * REAL(count)/n
print *, r
end program pi我知道我错过了将结果打印到数据文件中,我不确定如何实现这个结果。
这个程序为pi (3.149..)提供了一个很好的值,但是我如何实现步骤4,从而将pi的值输出为N的函数呢?
谢谢。
发布于 2017-08-17 21:22:04
简单地将最后的计算步骤放在外部循环中,并将n替换为i。还可以添加一个条件来限制打印结果的数量,例如,i % 100 = 0每100次打印一次。
program pi
implicit none
integer :: count, n, i
real :: r, x, y
count = 0
CALL RANDOM_SEED
DO i = 1, n
CALL RANDOM_NUMBER(x)
CALL RANDOM_NUMBER(y)
IF (x*x + y*Y <1.0) count = count + 1
IF ([condition])
r = 4 * REAL(count)/i
print *, i, r
END IF
END DO
end program pi发布于 2017-08-18 22:20:43
这里是一次尝试进一步@meowgoesthedog狗的努力。
Program pi
implicit none
integer :: count, n, i
real :: r, x, y
count = 0
Integer, parameter :: Slice_o_Pie = 8
Integer :: Don_McLean
Logical :: Purr = .FALSE.
OPEN(NEWUNIT=Don_McLean, FILE='American.Pie')
CALL RANDOM_SEED
DO i = 1, n
CALL RANDOM_NUMBER(x)
CALL RANDOM_NUMBER(y)
IF (x*x + y*Y <1.0) count = count + 1
Purr = .FALSE.
IF(MODULO(I, Slice_o_Pie) == 0) Purr = .TRUE.
IF (Purr) THEN
r = 4 * REAL(count)/i
print *, i, r
WRITE(LUN,*) 'I=',I,'Pi=',Pi
END IF
END DO
CLOSE(Don_McLean)
end program pihttps://stackoverflow.com/questions/45742563
复制相似问题