注册 登录
编程论坛 ASP技术论坛

急问:ASP的一个怪问题....

sass 发布于 2008-05-21 21:28, 1633 次点击
下面的代码,MN如果是具体的字符串就能达到我的预期目的,但如果是数组就不正常,如何解决!?!?!?
目标:在一组数中随机取6个不同的数
<%
MN="06 07 08 09 10 01 02 03 04 05 31 32 33 34 35 12 17 22 27 11 16 21 26"
response.write MN & "<BR>"
k=6
max=23
for i= 1 to k
  do
      Randomize   
      b(i)= Int(Rnd*max)+1
  loop until check3(b(i),i)
 response.write b(i) & "---" & b(i)*2+b(i)-2 & "<BR>"
  bbq=bbq & mid(MN,(b(i)*2)+(b(i)-2),2) & " "
next
Response.Write bbq & "<br>"
function check3(t,n)
   check3=true
   for d=1 to n-1
     if t=b(d) then
      check3=false
     End If
   next
end function
%>
12 回复
#2
sass2008-05-21 21:32
比如把第二行的MN换成以下代码,就显示不正常了!!!真是怪事!!如何解决?

for a=1 to 23
if len(a)=1 then a="0" & a
ok(a)=a
MN=MN & " " & ok(a)
next
#3
live142008-05-21 21:58
MN="06 07 08 09 10 01 02 03 04 05 31 32 33 34 35 12 17 22 27 11 16 21 26"
s=split(mn)


    Dim lsNums()
    redim lsNums(6)
   
    Randomize
    k = 0
    Do While k < 6
        aaa = Int(Rnd * ubound(split(mn))) + 1
         If s(aaa) <> "tttttttt" Then
            k = k + 1
           
            lsNums(k) =s(aaa)
             s(aaa) = "tttttttt"
            response.Write(lsNums(k)&"<br>")
         End If         
    Loop
#4
live142008-05-21 21:59
s换成你定义的数组,那个“ttttt”换成确保不会在这个数组中出现的东西
#5
sass2008-05-21 23:10
[bo]以下是引用 [un]live14[/un] 在 2008-5-21 21:59 的发言:[/bo]

s换成你定义的数组,那个“ttttt”换成确保不会在这个数组中出现的东西


先谢谢你的帮忙,你的代码,单独出来是没有问题,但整合到我的程序中就出现下标超界,我再修改后,虽然不出错了,但一个数都随机不出来了!!!真是搞到头大,近两年多没有玩编程,脑子不好使了....
#6
google2008-05-21 23:20
MN="06 07 08 09 10 01 02 03 04 05 31 32 33 34 35 12 17 22 27 11 16 21 26"
s=split(mn)


    Dim lsNums()
    redim lsNums(6)
   
    Randomize
    k = 0
    Do While k < 6
        aaa = Int(Rnd * ubound(s)) + 1
         If s(aaa) <> "tttttttt" Then
            k = k + 1
           
            lsNums(k) =s(aaa)
             s(aaa) = "tttttttt"
            response.Write(lsNums(k)&"<br>")
         End If         
    Loop
#7
google2008-05-21 23:21
aaa = Int(Rnd * ubound(s)) + 1
这句话注意一下,也就是你自己定义数组的维数,

如果你的数组名字是S的话,改了上面的的代码后应该不会出现问题
#8
sass2008-05-21 23:25
[bo]以下是引用 [un]google[/un] 在 2008-5-21 23:20 的发言:[/bo]

MN="06 07 08 09 10 01 02 03 04 05 31 32 33 34 35 12 17 22 27 11 16 21 26"
s=split(mn)


    Dim lsNums()
    redim lsNums(6)
   
    Randomize
    k = 0
    Do While k < 6
        aaa = Int(Rnd * u ...


你的代码单独运行也没有问题,但整合到我的程序中还是有问题,取得的数数量次次不同(按代码应该每次都可以选出6个数,但我现在就是有时2个,有时3个,有时4个.....)
#9
hxfly2008-05-21 23:32
.....
不会吧?
#10
hxfly2008-05-21 23:33
给出你数组的名字和数组的内容
#11
sass2008-05-21 23:36
[bo]以下是引用 [un]hxfly[/un] 在 2008-5-21 23:33 的发言:[/bo]

给出你数组的名字和数组的内容

https://bbs.bccn.net/thread-215538-1-1.html
#12
sass2008-05-22 00:36
已解决,谢谢楼上几位.
#13
google2008-05-22 00:51
不客气...
1