随即数问题 ASP
来源:百度知道 编辑:UC知道 时间:2024/05/20 19:28:27
《%
FOR O=1 TO 6
randomize
RESPONSE。WRIET int(rnd()*9)+1)
NEXT
%》
请问怎么生成了一不重复的随机数???
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 语句初始化随机数生成器,该生成器具有根据系统计时器得到的种子。