Nap*_*pyt 2 random fortran numbers
我正在学习 Fortran,我想做一个小游戏来练习输入。目标是找到好的数字,即随机数字。我编写了一个代码来生成数字,但我的问题是,结果是一个随机数,但它总是相同的。例如,当我执行代码 3 次时,它会打印 3 次 21 。
这是我的代码:
program find_good_number
integer :: random_number
integer :: seed
seed = 123456789
call srand(seed)
random_number = int(rand(0)*100)
print*, random_number
end program find_good_number
Run Code Online (Sandbox Code Playgroud)
你能帮我吗 ?谢谢
使用具有标准内在函数的 GNU Fortran 10.3,并要求 Fortran 运行时库查看种子,似乎程序的每次调用都会产生一系列不同的随机数。因此,这对于您想要的应用程序类型来说是可以的。
使用此代码:
Program TestRandom1
implicit none
integer :: randomSeedSize
integer :: count = 3
integer :: k = 0
real :: rx = 0.0
call random_seed(size = randomSeedSize)
write (*,'(a,i4)') 'size of random seed (in integers): ', &
randomSeedSize
call random_seed() ! use system-provided seed
do k = 1, count
call random_number(rx)
write (*, '(a,f10.8)') 'rx = ', rx
end do
End Program TestRandom1
Run Code Online (Sandbox Code Playgroud)
语境:
$
$ uname -s -m -r
Linux 5.13.9-100.fc33.x86_64 x86_64
$
$ gfortran --version
GNU Fortran (GCC) 10.3.1 20210422 (Red Hat 10.3.1-1)
Copyright (C) 2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
$
Run Code Online (Sandbox Code Playgroud)
测试:
$
$ random1.x
size of random seed (in integers): 8
rx = 0.23642105
rx = 0.39820033
rx = 0.62709534
$
$ random1.x
size of random seed (in integers): 8
rx = 0.84118658
rx = 0.45977014
rx = 0.09513164
$
$ random1.x
size of random seed (in integers): 8
rx = 0.33584720
rx = 0.86550051
rx = 0.26546007
$
Run Code Online (Sandbox Code Playgroud)
8*32 = 256 位的种子大小看起来与GNU Fortran 文档中提到的xoshiro256算法一致。