1、不重複隨機數1
生產[lowerbound,upperbound]的隨機數,核心**:int((upperbound - lowerbound + 1) * rnd + lowerbound),示例**如下:
subrndnumnorepeat1()
dimdic
dim i&
set dic = createobject("
scripting.dictionary")
randomize
(timer)
dountil dic.count = 20
i = int((100 - 50 + 1) * rnd + 50
) dic(i) = ""
loop
[a2].resize(dic.count,
end sub
2、不重複隨機數2
這個演算法比較巧妙,需要細細體會,才能知道真諦。這個演算法不會重複產生隨機數,但需要乙個佔位陣列。
比較適合輸出範圍之內所有數值的場合,比如,隨機發牌,示例**如下(生成20個1-100的不重複隨機數):
subrndnumnorepeat2()
dim rndnum&, i&
dimtemparr, arr
randomize (timer) '
初始化隨機數生成器
redim temparr(0
to99) '
產生乙個隨機數列
redim arr(0
to19, 0to0
)
for i = 0
to99
temparr(i) =i
next
for i = 99
to80
step -1
rndnum = int(i * rnd
) arr(
99 - i, 0) = temparr(rndnum) + 1
temparr(rndnum) =temparr(i)
next
[c2].resize(
ubound(arr) + 1, 1) =arr
end sub
3、不重複隨機數3
每產生乙個隨機數,就和已有的比較,如果已經存在,則重新產生
比較適合從乙個大範圍裡面抽出一小部分資料。
比如,從題庫中抽取試題,示例**
(生成20個1-100的不重複隨機數):
subrndnumnorepeat3()
dim rndnum&, i&, j&, k&
dimtemparr, arr
randomize (timer) '
初始化隨機數生成器
redim temparr(0
to19
)
redim arr(0
to19, 0to0
) j = 100
' k = 0
dowhile k < 20
rndnum = int(j * rnd) + 1
temparr(k) =rndnum
arr(k,
0) =rndnum
for i = 0
to k - 1
if temparr(i) = rndnum then
exit
fornext
if i = k then k = i + 1
loop
[e2].resize(
ubound(arr) + 1, 1) =arr
end sub
例子 隨機數 不重複的隨機數
以隨機數是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...
JavaScript 不重複隨機數
在echarts顏色生成中,用到隨機數來產生0到4的數字,來指代顏色陣列的其中乙個,簡單寫了個隨機數,然後介面生成時,會出現相鄰區塊的顏色相同。新增乙個標籤flag,然後每次判斷,如果為相同就迴圈呼叫。生成從minnum到maxnum的隨機數 var flag 0 function randomnu...