attribute vb_name = "modflearandom"
'flearandom module
'kitegirl 2005
public sub flearandom(byref plist() as long, optional byval pset_scan as boolean = false, optional byval pset_swap as boolean = false, optional byval pscan_start as long = 0, optional byval pscan_end as long = 0, optional byval pswap_start as long = 0, optional pswap_end as long = 0)
'flearandom函式
'語法:flearandom(plist() ,[pset_scan,] [pset_swap,] [pscan_start,] [pscan_end,] [pswap_start,] [pswap_end] )
'說明:以「跳蚤演算法」對序列進行亂序處理。
'引數: long plist() 必要引數。作為序列容器的陣列。
' boolean pset_scan 可選引數。掃瞄域設定開關。使其為true則使用者設定的掃瞄域引數有效。
' boolean pset_swap 可選引數。交換域設定開關。使其為true則使用者設定的交換域引數有效。
' long pscan_start 可選引數。掃瞄域開始。
' long pscan_end 可選引數。掃瞄域結束。
' long pswap_start 可選引數。交換域開始。
' long pswap_end 可選引數。交換域結束。
'說明:序列初始狀態可以有序地儲存在該陣列當中。
' 雖然序列本身可以適合某些應用,但單一的long型別不能滿足更多需要。
' 更多場合則以long型別的序列作為某個其他型別陣列的索引,這樣可以獲得更豐富的應用。
' 交換區的絕對長度,也就是abs(pswap_end-pswap_start)不能超過2^31。
''交換設定匯入
dim tswap_start as long '交換域開始
dim tswap_end as long '交換域結束
if pset_swap then
tswap_start = pswap_start
tswap_end = pswap_end
else
tswap_start = lbound(plist())
tswap_end = ubound(plist())
end if
'交換範圍
dim tswap_count as long '交換域元素數
tswap_count = (tswap_end - tswap_start) + 1
'交換補償
dim tswap_rep as long '交換補償
tswap_rep = tswap_start
'掃瞄設定匯入
dim tscan_start as long '掃瞄開始
dim tscan_end as long '掃瞄結束
if pset_scan then
tscan_start = pscan_start
tscan_end = pscan_end
elseif (not pset_scan) and pset_swap then
tscan_start = tswap_start
tscan_end = tswap_end
else
tscan_start = lbound(plist())
tscan_end = ubound(plist())
end if
'序列擾亂
dim tlist_index as long '序列索引
dim tlist_index_sur as long '序列索引_源
dim tlist_index_des as long '序列索引_目的
for tlist_index = tscan_start to tscan_end
tlist_index_sur = tlist_index
tlist_index_des = int(rnd * tswap_count) + tswap_rep
'交換plist(tlist_index_sur)和plist(tlist_index_des)
flearandom_valueswap plist(tlist_index_sur), plist(tlist_index_des)
next
end sub
private sub flearandom_valueswap(byref pa as long, byref pb as long)
'flearandom_valueswap過程
'語法:flearandom_valueswap pa, pb
'說明:以「跳蚤演算法」對序列進行亂序處理。
dim ttemp as long
ttemp = pa: pa = pb: pb = ttemp
end sub
不重複隨機數
1 不重複隨機數1 生產 lowerbound,upperbound 的隨機數,核心 int upperbound lowerbound 1 rnd lowerbound 示例 如下 sub rndnumnorepeat1 dimdic dim i set dic createobject scri...
例子 隨機數 不重複的隨機數
以隨機數是js數學物件的方法之一。math.random 0 1的隨機數這樣使用的範圍就比較小,所以如果想用這個api獲得其它範圍的隨機數的話,就需要使用下面這種 math.random b a 1 a 以上這種寫法是獲取a b的隨機數的寫法,比如想要50 100的隨機數,就應該是 math.ran...
不重複隨機數生成
直接上 生成 0,total 的隨機數 最大隨機數 ilist private static ilistgetrandomsequence int total random random new random for var i listbase.count 1 i 0 i return listo...