ASP随机数RND()使用方法,随机数rnd


ASP函数rnd()

函数rnd()返回一个0到1之间的随机数。

使用方法如下:

复制代码 代码如下:

response.write rnd() '其可能的返回值:0.2357746

如果你想用rnd()函数来返回某一范围内的整数,比方说大于等于0而小于等于特定整数upperbound的数字,你可以使用如下方法:

复制代码 代码如下:

response.write int((upperbound+1)*rnd)

例如,下面的语句将返回一个0和5之间的整数,包括0和5:

复制代码 代码如下:

response.write int((5+1)*rnd) 

如果你想获得一个处在某个范围内的随机数,该范围有一个大于0的下界lowerbound,可以使用如下的方法:

复制代码 代码如下:

response.write int((upperbound-lowerbound+1)*rnd+lowerbound)

例如,下面的脚本产生一个50到75之间的整数,包括50和75:

复制代码 代码如下:

response.write int((75-50+1)*rnd+50)

但是,有个问题,一个随机数产生了,但是每次都是同样的随机数。这也许会让你十分不解,有一个特殊的语句可以帮助解决这个问题,那就是randomize语句。

randomize语句用来强制函数rnd使用一个新的随机数序列。randomize语句通过计算机的系统计时器,为函数rnd提供一个新的种子值。

函数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
Greeting=”Happy to see you!”
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
Greeting=”Happy to see you!”
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)%><BR>
<%
NEXT
%>

这段脚本在0到9之间产生100个随机数。它跟踪对于每一个值有多少个随机数产生。最后,它打印一个代表结果的条形图。


ASP+access 用rnd产生随机数的问题

Rnd 函数返回一个小于 1 但大于或等于零的值。
记录多了以后 ID 很大,ID+Rnd的小数部分受精度限制可能被忽略不计了,值受ID影响较大,导致外面那个Rnd的参数经常重复
 

怎在asp中编一个可以产生一个随机数n

关于随机数,请参看以下资料:
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 不能重复先前的随机数序列。

---------------------------------
举例:
我们通常使用now()来做种子,这样可以得到比较完美的随机序列,如果我们需要1-100内的一个随机数
Randomize()
n=Int((100-1+1)*Rnd(now())+1)
 

评论关闭