포아송 확률 구하기

2개의 함수 이용

함수에서 다른 함수 이용

PROGRAM Pois_Pro

IMPLICIT NONE

REAL :: AveOccurs, Probability
INTEGER :: NumOccurs

PRINT *, "포아송 확률을 계산합니다."

WRITE (*, '(1X, A)', ADVANCE = "NO"), "단위 시간 동안 평균 발생 횟수(3.5) : "
READ *, AveOccurs

WRITE (*, '(1X, A)', ADVANCE = "NO"), "발생 횟수(5) : "
READ *, NumOccurs

Probability = Poisson(AveOccurs, NumOccurs)

PRINT '(1X, "포아송 확률 = ", F6.4)', Probability

CONTAINS

FUNCTION Poisson(Lamda, N)

REAL :: Poisson ! 리턴한 값의 타입
REAL, INTENT(IN) :: Lamda ! 받는 인수의 타입
INTEGER, INTENT(IN) :: N

Poisson = (Lamda ** N * EXP(-Lamda)) / REAL(Factorial(N))

END FUNCTION Poisson

FUNCTION Factorial(N)

INTEGER :: Factorial, I
INTEGER, INTENT(IN) :: N

Factorial = 1

DO I = 2, N

Factorial = Factorial * I

END DO

END FUNCTION Factorial

END PROGRAM Pois_Pro

위 소스를 06_02_Pois_Pro.f95로 저장

컴파일 및 프로그램 테스트



+ Recent posts