Function 从矩阵中获取随机索引数,fortran 90

Function 从矩阵中获取随机索引数,fortran 90,function,random,matrix,repeat,fortran90,Function,Random,Matrix,Repeat,Fortran90,我正在寻找一个函数或一种获得2D矩阵索引号的方法: 我的例子是,我有一个(Ly,Lx),其中Ly=100,Lx=100 我想得到矩阵的随机索引号,比如:random_node(a)=(random y,random x) 然后我想重复这样做,有一个约束条件,我不希望我的随机点重复,甚至不希望在半径为10个节点的阈值之后彼此靠近。该矩阵是欧拉二维矩阵(y,x) 至少第一个问题简单明了吗 谢谢大家! Albert p这里有一种方法可以在100x100矩阵中获得一组随机位置。首先,声明一个100x10

我正在寻找一个函数或一种获得2D矩阵索引号的方法:

我的例子是,我有一个(Ly,Lx),其中Ly=100,Lx=100

我想得到矩阵的随机索引号,比如:random_node(a)=(random y,random x)

然后我想重复这样做,有一个约束条件,我不希望我的随机点重复,甚至不希望在半径为10个节点的阈值之后彼此靠近。该矩阵是欧拉二维矩阵(y,x)

至少第一个问题简单明了吗

谢谢大家!


Albert p

这里有一种方法可以在100x100矩阵中获得一组随机位置。首先,声明一个100x100 real矩阵:

real, dimension(100,100) :: randarray
然后,将一个随机数放入该数组的每个元素中

call random_number(randarray)
现在,一个表达式,如

randarray > 0.9
返回一个逻辑数组,其中大约包含10%的真值和90%的假值。通过跟踪真实值的位置,您可以得到随机的x-E和y-E。实际上,您可能根本不需要找到这些位置,例如,您可以在屏蔽赋值和类似操作中简单地使用表达式

where(randarray>0.9) a = func()
当然,只要as
func
返回标量或100x100数组

这种方法保证每个位置都不同于所有其他位置

然而,它并没有解决“随机”位置之间不应过于接近的约束。当然,这种约束与随机性有点不一致


我想,您可以将100x100阵列分成10x10个块,然后在每个块中随机选择一个元素。这是约束之间的一个很好的折衷吗?

您不能只使用索引函数吗?看来是合法的马克,我试试看!