我想创建一个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