看了看你的代码,貌似你是在用随机函数。debug了一下,程序报错的位置确实是rand所在的行。
就我所知,fo ...
rand不是亂數的簡寫麼? 寫完整會比較好 我試試看 Villain 发表于 2017-4-4 09:12
看了看你的代码,貌似你是在用随机函数。debug了一下,程序报错的位置确实是rand所在的行。
就我所知,fo ...
我想要取整數的亂數耶 您的取法好像是介於零跟一之間的數 希萊雅桑 发表于 2017-4-4 13:40
我想要取整數的亂數耶 您的取法好像是介於零跟一之間的數
随机函数只能生成0到1之间的数。
一般情况下,如果要生成0到N之间的随机整数,那么用生成的0到1之间的随机数x乘以N然后取整就好。取值域为正整数的话,那么用1/x函数取整就好了,不过这样非常不安全,会溢出。 希萊雅桑 发表于 2017-4-4 13:27
rand不是亂數的簡寫麼? 寫完整會比較好 我試試看
我用的是Microsoft Visual Studio的fortran编译器。这里面生成随机数的方式就是用call random_numbe(x)的方式来生成一个0到1之间的随机实数的。如下可以生成1到4之间的随机整数:
program fc
implicit none
integer::I,J,k
real(kind=8)::x
i=0
do
if(I.gt.1000)exit
call random_seed()
call random_number(x)
k=1+anint(3*x)
write(*,*)k
I=I+1
enddo
pause
end
至于这种方法在你所用的编译器上是否能用就不知道了。
我曾经用这个随机函数来算圆周率,算了一天左右,也只算到小数点后的第八位,由此看来,生成的伪随机数分布还是差强人意。 Villain 发表于 2017-4-4 15:34
我用的是Microsoft Visual Studio的fortran编译器。这里面生成随机数的方式就是用call random_numbe(x)的 ...
謝謝 解決了
页:
1
[2]