隨機雜湊的實現(VB2005)

2021-05-01 21:15:21 字數 1159 閱讀 4866

編寫過程式的人都知道,隨機雜湊是我們經常要實現的問題。

什麼是隨機雜湊?比方說,現在有乙個數列1、2、3、4、5、6。我希望得到乙個隨機的打亂順序的數列,例如:2,5,6,3,4,1。這個新的數列就是原數列的隨機雜湊。

實際情況中,我們經常需要給定乙個範圍,就能得到乙個隨機雜湊。比方說:給定[2,7],通過運算得到乙個雜湊:6,4,5,7,2,3。

下面是實現隨機雜湊的乙個函式,用的是vb2005編寫的。

'函式名:getrndlist

'作用:獲得乙個隨機雜湊

'引數minvalue:隨機雜湊的下限

'引數maxvalue:隨機雜湊的上限

'引數count:隨機雜湊的個數

public function getrndlist( _

byval minvalue as integer,  _

byval maxvalue as integer,  _

byval count as integer

) as integer()

if count <= 0 orelse count > maxvalue - minvalue + 1 then return

nothing

dim mbase() as integer, mlist() as integer

dim i as integer, j as integer, mr as

new random

redim mbase(count - 1)

redim mlist(maxvalue - minvalue)

for i = 0 to maxvalue - minvalue

mlist(i) = i + minvalue

next

for i = maxvalue - minvalue to maxvalue - minvalue - count + 1 step -1

j = mr.next(i + 1)

call swapnumber(mlist(i), mlist(j))

next

for i = 0 to count - 1

mbase(i) = mlist(maxvalue - minvalue - i)

next

return mbase

end function

全排列的隨機雜湊的實現(VB2005)

在實際的程式設計中,有時會需要遍歷一組數字的全排列,來獲得計算的結果。這在解某些最優解的題目的時候,特別有用。例如 現在有4個人去完成4項任務,每人只能完成一項任務,每人完成各個任務的效率都不同。那如何安排才能使得總效率最高?這是乙個任務指派的問題,我們可以使用匈牙利法解決,這不是本篇文章的討論重點...

遍歷組合的實現 VB2005

在數學的統計分支裡,排列與組合是乙個很重要的分支。在各種實際應用中,排列與組合也扮演了重要的角色。舉例來說,安排人員參加活動可以看作是組合的應用。比方說,現在有十個人,選出其中的五個人參加某項集體活動。由於彼此之間有著脾氣性格等因素,所以,不同的人員組合有著不同的工作效率。現在,要求你找出效率最高的...

遍歷組合的實現 VB2005

在數學的統計分支裡,排列與組合是乙個很重要的分支。在各種實際應用中,排列與組合也扮演了重要的角色。舉例來說,安排人員參加活動可以看作是組合的應用。比方說,現在有十個人,選出其中的五個人參加某項集體活動。由於彼此之間有著脾氣性格等因素,所以,不同的人員組合有著不同的工作效率。現在,要求你找出效率最高的...