top
Loading...
利用隨機函數獲取某一范圍的整數及其應用
[“酷閃”原創]

我們在編寫ASP的過程中經常會遇到需要取得一個整數范圍內的一個隨機整數,利用VBScript內建的Rnd()函數可以很輕松
的得到這樣的整數,假如要從[min,max]這個整數范圍內隨機抽取一個整數,具體公式如下:

隨機整數=Int((max-min+1)*Rnd()+min)

仔細思考一下上面的公式,應該很快能理解其中的含義。

下面就以“酷閃”首頁“自助鏈接”為例,來說明隨機抽取整數在數據庫查詢中的一個用途。

構想


“酷閃”首頁提供自助連接,允許自行加入某網站連接。
一般的“自助連接”只是在首頁顯示最新加入的若干個連接,然后另外提供一個瀏覽所有連接的頁面,很多情況下,只有
不多的瀏覽者去打開該頁去查詢以前加入的連接,這樣就使得比較早加入的連接基本沒有被點擊的機會。根據這種情況采
取以下方案:在首頁顯示10個連接,其中前3個是最新加入的連接,后7個從以前加入的連接中隨機抽取7個顯示。

具體實現


用Access數據庫保存用戶信息(網站名稱,網址,簡要說明),建立add.asp(加入操作頁面),
改造首頁加入顯示程序段。這里只對顯示程序段給以說明。
假設Access數據庫文件為link.mdb,并已經有超過20個的連接信息,其中自助連接信息放在表selflink中,包含字段:
ID,網站名稱,地址,簡要說明,加入時間

程序代碼

'首頁打開數據庫,并將所有記錄按時間倒序排列,新加入的在前
set con=server.CreateObject("adodb.connection")
con.open "Driver={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("link.mdb")
set rst=server.createobject("adodb.Recordset")
rst.open "select * from selflink order by 加入時間desc",con,3,1,1

'顯示最新加入的3個連接
rst.movefirst
for i=1 to 3
response.write "<a href="&rst("地址")&">"&rst("網站名稱")&"</a><br>"
rst.movenext
next

'從第4個到第20個記錄中隨機抽取7個
randomize
for i=1 to 7
rndtemp=rst.recordcount-1
curorrnd=Int((rndtemp-3+1)*Rnd()+3))
rst.move curorrnd,1
response.write "<a href="&rst("地址")&">"&rst("網站名稱")&"</a><br>"
next

'關閉數據庫,清除內存
rst.close
con.close
set rst=nothing
set con=nothing

此例在WIN98+PWS上調試成功,但在NT+IIS時指令:rst.move curorrnd,1可能會遇到困難,可做如下改動:
rst.movefirst
rst.move curorrnd

怎么樣不是很難吧,試試看吧!:)加上這段程序后,每次刷新首頁都能看到不同的連接。因為隨機函數的幾率是一樣
的,這樣才使那些加入“自助連接”的朋友有了相同的對待。

北斗有巢氏 有巢氏北斗