編寫過程式的人都知道,隨機雜湊是我們經常要實現的問題。
什麼是隨機雜湊?比方說,現在有乙個數列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
在數學的統計分支裡,排列與組合是乙個很重要的分支。在各種實際應用中,排列與組合也扮演了重要的角色。舉例來說,安排人員參加活動可以看作是組合的應用。比方說,現在有十個人,選出其中的五個人參加某項集體活動。由於彼此之間有著脾氣性格等因素,所以,不同的人員組合有著不同的工作效率。現在,要求你找出效率最高的...