不会吧,我以前都这样用的,要不你先用Random函数初始化一下

解决方案 »

  1.   


    感谢您使用微软产品。函数Rnd根据初始的seed产生一系列随机数,相同的seed将产生相同的数,因此需要在调用Rnd前用Randomize初始化seed。如下例将产生5个随机数。Private Sub Command1_Click()
        Dim rndnum(5)
        Dim i
        Randomize
        For i = 1 To 5
            rndnum(i) = Rnd()
            MsgBox rndnum(i)
        Next i
    End Sub
    详细信息请参考以下链接:
    Rnd Funtion
    http://msdn.microsoft.com/library/en-us/vbenlr98/html/vafctRnd.asp Randomize Statement 
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vblr7/html/vastmrandomize.asp
    -  微软全球技术中心 VB技术支持本贴子以“现状”提供且没有任何担保,同时也没有授予任何权利。具体事项可参见使用条款
    (http://support.microsoft.com/directory/worldwide/zh-cn/community/terms_chs.asp)。
    为了为您创建更好的讨论环境,请参加我们的用户满意度调查
    (http://support.microsoft.com/directory/worldwide/zh-cn/community/survey.asp?key=(S,49854782))。
      

  2.   

    LG = Int(Rnd * time)
      

  3.   


    Randomize'让程序"真正"随机rnd'要多少就写多少吧,自己用个for...next...
      

  4.   

    Private Sub Command1_Click()
        Dim rndnum(5)
        Dim i
        Randomize
        For i = 1 To 5
            rndnum(i) = Rnd()
            MsgBox rndnum(i)
        Next i
    End Sub
    在实际使用的时候也会有重复的
      

  5.   

    Private Sub Command1_Click()
    Dim i As Integer
    Dim k As Integer
    Dim c(5) As Integer
        For i = 1 To 5 '5个不相同的2位数
            Randomize Timer
            c(i) = Int(Rnd * 90) + 10
            k = i
            For j = 1 To k - 1
                If c(j) = c(k) Then i = i - 1 '如果相同就不要
            Next j
        Next i
        For i = 1 To 5
            Print c(i);
        Next i
        Print
    End Sub
      

  6.   

    如果随机数是一位数可以用以下方法:
    选声明一个字符串变量,给它赋值 "0123456789"
    产生一个1到10的随机数,按随机数的值从该字符串中用mid截取一个字符,再转换成数字,然后将字符串变量中截取的字符删除。
    第二次产生一个1到9的随机数来截取......如果是n位数,可以先产生一个n-1位数的随机数,再用上面的方法产生一个随机数,再将两个数字并起来就行了。。
      

  7.   

    randamize(Time)
    dim x(5) as long
    for i=1 to 5
     x(i)=int(rnd*?)
    next i
    因为产生的随机数介于0-1之间,所以rnd*?,?就是你要的范围
     
    这样的话,肯定随机了,因为time一直在变嘛
      

  8.   

    Randomize
    Dim a(5) as bool,x(5) as integer,j as integer
    For i = 1 to 5
       j=int(rnd(1)*5)
      

  9.   

    Randomize
    Dim a(5) as bool,x(5) as integer,j as integer, i as integer
    for i = 1 to 5
    a(i)=false
    next i
    For i = 1 to 5
    Redo:
       j=int(rnd(1)*5)
       if a(i)=true then goto redo
       a(i)=true
    next i