ASP中隨機函數Randomize的使用

 

ASP中隨機函數Randomize的使用

2009-08-22 19:19

Randomize

初始化隨機數生成器。

Randomize [number]

number 參數可以是任何有效的數值表達式。

說明

Randomize 使用 number 參數初始化 Rnd 函數的隨機數生成器,賦給它新的種子值。如果省略 number,則使用系統計時器返回的值作爲新的種子值。

如果不使用 Randomize,則第一次調用 Rnd 函數(無參數)時,它將使用相同的數字作爲種子值,隨後使用最後生成的數值作爲種子值。

注意 要重複隨機數的序列,請在使用數值參數調用 Randomize 之前,立即用負值參數調用 Rnd。使用相同的 number 值的 Randomize 不能重複先前的隨機數序列。

下面例子舉例說明如何使用 Randomize 語句:

例如:

Dim MyValue, Response

Randomize '初始化隨機數生成器。

Do Until Response = vbNo

MyValue = Int((6 * Rnd) + 1)' 產生 1 到 6 之間的隨機數。

MsgBox MyValue

Response = MsgBox ("Roll again? ", vbYesNo)

Loop

Rnd 函數

返回一個隨機數。

Rnd[(number)]

number 參數可以是任意有效的數值表達式。

說明

Rnd 函數返回一個小於 1 但大於或等於 0 的值。number 的值決定了 Rnd 生成隨機數的方式:

如果 number 爲 Rnd 生成

小於零 每次都相同的值,使用 number 作爲種子。

大於零 序列中的下一個隨機數。

等於零 最近生成的數。

省略 序列中的下一個隨機數。

因每一次連續調用 Rnd 函數時都用序列中的前一個數作爲下一個數的種子,所以對於任何最初給定的種子都會生成相同的數列。

在調用 Rnd 之前,先使用無參數的 Randomize 語句初始化隨機數生成器,該生成器具有基於系統計時器的種子。

要產生指定範圍的隨機整數,請使用以下公式:

Int((upperbound - lowerbound + 1) * Rnd + lowerbound)

這裏, upperbound 是此範圍的上界,而 lowerbound 是此範圍內的下界。

注意 要重複隨機數的序列,請在使用數值參數調用 Randomize 之前,立即用負值參數調用 Rnd。使用同樣 number 值的 Randomize 不能重複先前的隨機數序列。

以前看過這方面的內容,今天又一次見到了,所以就總結一下,以後還要用呢!

下面給出一個實例來說明Randomize的用途:

解決防止表單重複提交的方法

表單文件formtest.asp

<%

Randomize '初始代隨機數種子

num1=rnd() '產生隨機數num1

num1=int(26*num1)+65 '修改num1的範圍以使其是A-Z範圍的Ascii碼,以防表單名出錯

session("antry")="test"&chr(num1) '產生隨機字符串

%>

<form name="test" action="testact.asp" method="post">

你的名字:<input type='text' name='' size=30>  '注意本行中使用了隨機表單項名

<input type='submit' value='提交'>

</form>

表單處理程序testact.asp

<%

teststr=request.form(session("antry"))

if teststr="" then

response.write "沒有填寫姓名或重複提交"

'由於用戶沒有填寫名字,或表單被重複提交(標誌爲session("antry")爲空)引起

else

response.write teststr

session("antry")=""  '提交成功,清空session("antry"),以防重複提交!!

end if

%>

在這裏,你只需隨機化一個必填項目的表單項名即可,不必隨機化所有的表單項目。

原文地址:http://hgangok.blog.163.com/blog/static/28352700201001844628427/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章