2013-01-31 65 views
-1

我在找一个函数或方法来得到一个二维矩阵的索引号:获得随机指标数,FORTRAN 90

我举的例子是,我有一个(LY,LX),其中Ly的= 100和LX = 100

我想要得到的矩阵的随机索引号,如:Random_node(A)=(随机Y,随机X)

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

至少第一个问题是直截了当的?

谢谢大家!

Albert P

+0

你不能只使用INDEX函数吗? http://people.sc.fsu.edu/~jburkardt/f_src/index/index.html –

回答

2

下面是在100x100矩阵中获取一组随机位置的一种方法。首先,声明一个100×100矩阵的实数:

real, dimension(100,100) :: randarray 

然后,把一个随机数到该数组的每个元素现在

call random_number(randarray) 

,表达如

randarray > 0.9 

返回一个逻辑数组大约包含10%的真值和90%的假。通过追踪真实值的位置,您可以找到随机的x-es和y-es。事实上,你可能不会需要找到这些地点的一切,你可以简单地使用在蒙面分配和类似操作的表达,例如

where(randarray>0.9) a = func() 

长,当然,作为func返回标或100×100阵列。

该方法保证每个位置都与其他位置不同。

然而,它并没有解决你的约束,即'随机'的位置不应该太接近彼此。当然,这个约束与随机性有点不一致。

你可以,我想,将你的100x100阵列分成10x10个块,并随机选择每个块中的一个元素。这是你的约束之间的一个很好的妥协?

+0

似乎合法马克,我会尝试! –