0
터미널에 10000 의사 랜덤 값을 인쇄하는 선형 합동 생성기를 프로그래밍했습니다. 이것은 모듈의 일부이며 따라서 자체 기능입니다. 이제 2 개의 임의로 균일하게 분포 된 숫자를 취하여 상자 뮬러 메서드에서 사용하여 2 개의 숫자를 더 생성하는 새 함수를 작성하려고합니다. 상자 뮬러 부품 자체를 이해합니다. 이전 10000에서 단지 2 개의 값만 가져 오는 프로그램을 어떻게 이해하지 못합니까? 내 코드는 다음과 같습니다.10000 값을 생성하는 다른 함수의 2 개의 값을 사용하는 함수를 작성하는 방법은 무엇입니까?
module rng
implicit none
integer, parameter :: dp = selected_real_kind(15,300)
real(kind=dp) :: A=100, B= 104001, M = 714025
contains
function lcg(seed)
integer :: lcg
integer, optional, intent(in) :: seed
real(kind=dp) :: x = 0
if(present(seed)) x = seed
x = mod(A * x + B, M)
lcg = x
end function
end module
program lcgtest
use rng
implicit none
integer :: N
do N = 1, 10000
print *, lcg()
end do
end program
감사합니다.
운동입니까? 실제 사용을 위해 당신은 거기서 좋은 도서관을 찾을 수 있습니다. –
"이전 10000에서 단지 2 개의 값을 취합니다". 문자 그대로 배열에 10000 값을 저장합니다. 두 가지를 고르기 위해 어떤 기준을 사용합니까? 왜 그렇게하고 싶습니까? – agentp