program main
integer :: n1, n2, i
real(8) :: pi, x1, x2
n1 = 1000*1000
n2 = 0
call random_init(.true., .true.)
!$omp parallel do reduction(+:n2)
do i = 1, n1
call random_number(x1)
call random_number(x2)
if (x1**2 + x2**2 <= 1.0_8) n2 = n2 + 1
end do
pi = 4.0_8*dble(n2)/dble(n1)
print *, pi
end program
The above program generates a different value of pi at each run. How can I ensure replicability in this case? GFortran 12.2.1 with flags -fimplicit-none -O3 -fopenmp is used.