使用隨機數,解釋函式rnd()

2021-04-12 19:47:40 字數 1683 閱讀 4991

函式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個隨機數。它跟蹤對於每乙個值有多少個隨機數產生。最後,它列印乙個代表結果的條形圖

隨機數函式

說明 1 這兩個函式都在標頭檔案是stdlib.h中。2 rand 函式和srand 函式必須配套使用。1 rand 函式 原型 int rand void 功能 產生從0到rand max 0x7fff 之間的隨機數。標頭檔案 stdlib.h 例 include include int main...

隨機數使用

函式rnd 是乙個非常重要的函式。如果你想建立乙個隨機的問候語,乙個日期的隨機提示,或者甚至乙個遊戲,你將要使用這個函式。函式rnd 返回乙個0到1之間的隨機數。這裡有這個函式的乙個例子及其可能的返回值 rnd 0.7055643 典型情況下,你更感興趣的是用這個函式來返回處在一定範圍內的整數。要返...

C 隨機數函式的使用

隨機數 計算機的隨機數都是由偽隨機數,即是由小m多項式序列生成的,其中產生每個小序列都有乙個初始值,即隨機種子。注意 小m多項式序列的週期是65535,即每次利用乙個隨機種子生成的隨機數的週期是65535,當你取得65535個隨機數後它們又重複出現了。我們知道rand 函式可以用來產生隨機數,但是這...