关于asp中的随机数问题~求救

来源:百度知道 编辑:UC知道 时间:2024/09/21 15:30:06
我新学的ASP 看了一段代码是关于10个随即字母的代码 看了之后晕了半天不是很明白
<%
function get_key(digits)
'定义并初始化数组
dim charray(26)
'初始化数字
for i=65 to 90
charray(i-65)=chr(i)
next
randomize '初始化随机数生成器
do while len(output)<digits
num=charray(int((26-0+1)*rnd+0))
output=output+num
loop
get_key=output
end function

<center><%=get_key(10)%></center>

重点问下
charray(i-65)=chr(i)什么意思
num=charray(int((26-0+1)*rnd+0))又是什么意思
还没有为什么<center><%=get_key(10)%></center>就得出来了 我不知道那些随即字母怎么进入那个函数的? 我昨天才开始看ASP 自学的没有个老师~希望你们能帮帮我
你的回答让我明白很多 谢谢哈 不过我还有问题不明白 就是这些随即字母是通过什么排列出来的 还有 这里的
output=output+num
loop
get_key=output
函数是如何调用的

chr()是一个自带的函数,其作用就是将ASCII码转化为字母,如chr(65)得到的就是字母A,你可以去查一下字符编码表嘛!而65—90就是字母A-Z的ASCII码。

rnd是产生一个0到1的随机数,但前边一定要用randomize去初始化,否则每次的rnd的值是相同的。

好了,这一切你都明白后就简单了,charray(i-65)实际上是存储charray()数组内容的,当i从65向90变化时,charray是从0到下标25的变化。其中存入的数组内容就是chr()从65向90的变化,而就是charray(0)中放的是字母A,charray(25)中放的是字母Z这样的一个数组。
而num这样的一个数是取出这个字母数组(charray)中的随机一个!
int((26+1)*rnd)的取值范围是0-25的整数!这里作者是按严格的原理写成的,所以你能看到+0这样的现象。其实在VB和VBScript这样的宽松环境中,charray(0)="A",而charray(0.2)的结果还是将其括号内的值是自动调整的,这种调整也是只取整数!但毕竟这样不太严格,容易出错或者说维护不易,别人不见得能读懂程序而已。
但它的作用的确就是num = charray(27*rnd)
而这些所用的定义全部放在了自定义的函数Get_key内,所以当然在程序中要使用<%=get_key(10)%>这样的表达式取出了!

数组?