隨機數使用

2021-04-01 16:47:15 字數 1603 閱讀 3532

函式rnd()是乙個非常重要的函式。如果你想建立乙個隨機的問候語,乙個日期的隨機提示,或者甚至乙個遊戲,你將要使用這個函式。

函式rnd()返回乙個0到1之間的隨機數。這裡有這個函式的乙個例子及其可能的返回值:

<%=rnd()%>

0.7055643

典型情況下,你更感興趣的是用這個函式來返回處在一定範圍內的整數。要返回乙個大於等於0而小於某個特定整數的數字,你可以使用如下的語句:

<%=int((upperbound+1)*rnd)%>

用你想產生的最大隨機數代替表示式upperbound。例如,下面的指令碼返回乙個0和5之間的數,包括0和5:

<%=int(5+1)*rnd)%>

如果你想產生乙個處在某個範圍內的隨機數,該範圍有乙個大於0的下界,可以使用如下的指令碼:

<%=int((upperbound – lowerbound + 1)*rnd+lowerbound)%>

例如,下面的指令碼產生乙個50到75之間的隨機數(包括50和75):

<%=int((75-50+1)*rnd+50)%>

無論何時使用函式rnd(),它將以同樣的順序返回同樣的隨機數,這也許另你吃驚。考慮如下的例子:

pick_greeting=int((2+1)*rnd)

select case pick_greeting

case 0

greeting=」welcome!」

case 1

greeting=」hello!」

case 2

end select

<%=greeting%>

有乙個特殊的語句可以幫助解決這個問題。randomize語句用來強制函式rnd()使用乙個新的隨機數序列。randomize語句通過計算機的系統計時器,為函式rnd()提供乙個新的種子值。下面的例子顯示了如何修改上面的例子,使其正確工作:

randomize

pick_greeting=int((2+1)*rnd)

select case pick_greeting

case 0

greeting=」welcome!」

case 1

greeting=」hello!」

case 2

end select

<%=greeting%>

這個指令碼可以正確工作。每次執行這個指令碼時,將會產生乙個新的隨機問候。randomize語句強制函式rnd()使用新的隨機數序列。

最後,如果你對函式rnd()所產生的數值的分布感到好奇,你可以用下面的指令碼來確定它:

const upperbound=9,iterations=100

redim dist(upperbound)

randomize

for i=1 to iterations

rnd_num=int((upperbound+1)*rnd)

dist(rnd_num)=dist(rnd_num)&」#」

next

for i=0 to upperbound

<%=i&」 : 「&dist(i)%>

next

這段指令碼在0到9之間產生100個隨機數。它跟蹤對於每乙個值有多少個隨機數產生。最後,它列印乙個代表結果的條形圖

隨機數 偽隨機數

隨機數 偽隨機數 rand函式在產生隨機數前,需要系統提供的生成偽隨機數序列的種子,rand根據這個種子的值產生一系列隨機數。如果系統提供的種子沒有變化,每次呼叫rand函式生成的偽隨機數序列都是一樣的。srand unsigned seed 通過引數seed改變系統提供的種子值,從而可以使得每次呼...

opencv 隨機數使用

包含標頭檔案 include 返回隨機int的函式原型 returns a random integer sampled uniformly from 0,n unsigned operator unsigned n 例子 rng rng therng unsigned int rand num r...

C 使用隨機數

使用語言 c 環境 net framework 4.6.1 當前使用 貌似支援所有環境,我就不多說了 random 這個類是偽隨機數生成器 private int suijishushenchenfun 參考上面 實現,可得到100到200之間的隨機數 random 這個類裡面有 2 種常用隨機返回...