不重複隨機數

2022-07-07 12:45:12 字數 1876 閱讀 3506

1、不重複隨機數1

生產[lowerbound,upperbound]的隨機數,核心**:int((upperbound - lowerbound + 1) * rnd + lowerbound),示例**如下:

sub

rndnumnorepeat1()

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的不重複隨機數):

sub

rndnumnorepeat2()

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的不重複隨機數):

sub

rndnumnorepeat3()

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...