+ 1 / -1随机分布在2D数组中

时间:2015-11-28 15:59:23

标签: matrix random fortran

我想创建一个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,如果是,如何?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分: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