+1/-1随机分布在二维阵列中



我想创建一个4x4数组,该数组仅在fortran95中随机填充+1或-1。我发现了一个可以生成数字的帖子:

program rand_test
use,intrinsic :: ISO_Fortran_env
real  :: r(6)
integer       :: i(6)
! call init_random_seed() would go here
call random_number(r)
i = -1 + FLOOR(3*r)       ! n=-1 and m=1
print *, i
end program

但是,这包括我不想要的0。是否可以删除0,如果可以,如何删除?

对于数组中的每个元素,随机生成0或1,乘以2,减去1。

这基本上就是@Andrew Morton所建议的。下面是做你想要的代码

program test_rand
implicit none
real  ::r(4,4)
integer       :: i(4,4)
! call init_random_seed() would go here
call random_number(r)
i = nint(r)*2-1       ! n=-1 and m=1
print *, i
end program

最新更新