随即数问题 ASP

来源:百度知道 编辑:UC知道 时间:2024/05/20 19:28:27
《%
FOR O=1 TO 6
randomize
RESPONSE。WRIET int(rnd()*9)+1)
NEXT
%》
请问怎么生成了一不重复的随机数???

这段代码的中心含义如下:

先定义一个数组,大小自定;

由1循环至数组的上限,将数组中每一个值都赋值为0;

产生一个随机数,将它赋值给任意一个数组变量,如果这个数组变量的值为0,即没有被其它数占用过,则确定赋值.否则退出.
<%
Dim n(370)
dim i
dim j
dim q

For i = 1 To 370
n(i) = 0
Next
j = 0
Randomize
While j < 5
q = Int(Rnd(1) * 369 + 1)
If n(q) = 0 Then
response.write q & "</br>"
n(q) = 1
j = j + 1
End If
Wend
%>

Randomize语句的作用是初始化随机数生成器,该生成器具有根据系统计时器得到的种子。
Rnd 函数返回一个大于或等于0的但是小于1的值。

为了生成某个范围内的随机整数,可使用以下公式:

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

这里,upperbound 是随机数范围的上限, lowerbound 则是随机数范围的下限。

对最初给定的种子都会生成相同的数列,因为每一次调用 Rnd 函数都用数列中的前一个数作为下一个数的种子。

在调用 Rnd 之前,先使用无参数的 Randomize 语句初始化随机数生成器,该生成器具有根据系统计时器得到的种子。