我在找一個函數或方法來得到一個二維矩陣的索引號:獲得隨機指標數,FORTRAN 90
我舉的例子是,我有一個(LY,LX),其中Ly的= 100和LX = 100
我想要得到的矩陣的隨機索引號,如:Random_node(A)=(隨機Y,隨機X)
然後,我想這樣做反覆具有約束條件是我不希望我的隨機點重複,或者甚至不會在一個(假設)10個半徑節點的閾值之後彼此靠近。該矩陣是歐拉二維矩陣(y,x)。
至少第一個問題是直截了當的?
謝謝大家!
Albert P
我在找一個函數或方法來得到一個二維矩陣的索引號:獲得隨機指標數,FORTRAN 90
我舉的例子是,我有一個(LY,LX),其中Ly的= 100和LX = 100
我想要得到的矩陣的隨機索引號,如:Random_node(A)=(隨機Y,隨機X)
然後,我想這樣做反覆具有約束條件是我不希望我的隨機點重複,或者甚至不會在一個(假設)10個半徑節點的閾值之後彼此靠近。該矩陣是歐拉二維矩陣(y,x)。
至少第一個問題是直截了當的?
謝謝大家!
Albert P
下面是在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個塊,並隨機選擇每個塊中的一個元素。這是你的約束之間的一個很好的妥協?
似乎合法馬克,我會嘗試! –
你不能只使用INDEX函數嗎? http://people.sc.fsu.edu/~jburkardt/f_src/index/index.html –