明凯博客

关注网站技术,一个特立独行的程序员

Asp生成随机数函数 randomize的使用

函数rnd是一个非常重要的函数。如果你想建立一个随机的问候语,一个日期的随机提示,或者甚至一个游戏,你将要使用这个函数。

函数rnd返回一个0到1之间的随机数。这里有这个函数的一个例子:

1
< %=rnd()%>

其可能的返回值:

0.7055645

典型情况下,你更感兴趣的是用这个函数来返回处在一定范围内的整数。要返回一个大于等于0而小于某个特定整数的数字,你可以使用如下的语句:

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

用你想产生的最大随机数代替表达式upperbound。例如,下面的脚本返回一个0和5之间的数,包括0和5:

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

如果你想产生一个处在某个范围内的随机数,该范围有一个大于0的下界,可以使用如下的脚本:

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

例如,下面的脚本产生一个50到75之间的随机数:

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

无论何时使用函数rnd,它将以同样的顺序返回同样的随机数,这也许另你吃惊。
考虑如下的例子:

1
2
3
4
5
6
7
8
9
10
11
12
< % 
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提供一个新的种子值。
最后,如果你对函数rnd所产生的数值的分布感到好奇,你可以用下面的脚本来确定它:

1
2
3
4
5
6
7
8
9
10
11
12
< % 
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个随机数。它跟踪对于每一个值有多少个随机数产生。
最后,它打印一个代表结果的条形图。

, ,

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注