function randomizearray(vector as
variant) as
variant
dim l as
integer
dim u as
integer
dim i as
integer
dim rndposition as
integer
dim temp as
variant
l = lbound(vector)
u = ubound(vector)
for i = l to u
rndposition = int((u - l + 1) * rnd + l)
if rndposition <> i then
temp = vector(i)
vector(i) = vector(rndposition)
vector(rndposition) = temp
endif
next i
randomizearray = vector
endfunction
sub test()
dim a as
variant
a = array(1, 2, 3, 4, 5, 6, 7, 8)
a = randomizearray(a)
for i = lbound(a) to ubound(a)
debug.print a(i)
next i
endsub
隨機化演算法
隨機化演算法的主要目的是希望讓隨機發生在演算法上,而不是發生在輸入分布上,這樣的話,沒有特別的輸入會引起我們的演算法的最壞情況。即使你最壞的敵人也無法產生最壞的輸入陣列。因為隨機排列使得輸入次序不再相關。只有在隨機數生成器產生乙個不走運的排列時,隨機演算法才會執行得很差。一.隨機優先順序陣列法 我們...
隨機化搜尋
參與考古挖掘的小明得到了乙份藏寶圖,藏寶圖上標出了 nn 個深埋在地下的寶藏屋,也給出了這 nn 個寶藏屋之間可供開發的mm 條道路和它們的長度。小明決心親自前往挖掘所有寶藏屋中的寶藏。但是,每個寶藏屋距離地面都很遠,也就是說,從地面打通一條到某個寶藏屋的道路是很困難的,而開發寶藏屋之間的道路 則相...
簡單隨機化
有乙個挺不錯的 隨機化blog codechef mstones 平面上有 n 個點 x i,y i 保證這 n 個點可以用 7 條直線覆蓋。找出一條直線使得它覆蓋的點最多 30 組 test n leq10 4 x i y i leq1.5 times10 4 每次隨機找兩個點 a,b 判斷它們所...