rnd()是随机函数
用时间产生随机数可使用:year(now) + month(now) + day(now)  + hour(now) + Minute(Now) + Second(Now)

解决方案 »

  1.   

    将时间作为随机函数的种子
    也就是rnd(时间)
      

  2.   

    好象RND如果不带参数的话,本身就是根据时间产生随机数的,不知是不是我记错了
      

  3.   

    也可以先用初始化随机数种子,初始化一下。
    Randomize(时间)
    然后  RND 也可以产生随机数的。
      

  4.   


    Randomize 语句
          初始化随机数生成器。语法Randomize [number]可选的 number 参数是 Variant 或任何有效的数值表达式。说明Randomize 用 number 将 Rnd 函数的随机数生成器初始化,该随机数生成器给 number 一个新的种子值。如果省略 number,则用系统计时器返回的值作为新的种子值。如果没有使用 Randomize,则(无参数的)Rnd 函数使用第一次调用 Rnd 函数的种子值。注意 若想得到重复的随机数序列,在使用具有数值参数的 Randomize 之前直接调用具有负参数值的 Rnd。使用具有同样 number 值的 Randomize 是不会得到重复的随机数序列的。
    Randomize 语句示例
    本示例用 Randomize 语句初始化随机数生成器。由于忽略了数值参数, 所以 Randomize 用 Timer 函数的返回值作为新的随机数种子值。Dim MyValue
    Randomize   ' 对随机数生成器做初始化的动作。MyValue = Int((6 * Rnd) + 1)   ' 生成 1 到 6 之间的随机数值。
    Timer 函数
          返回一个 Single,代表从午夜开始到现在经过的秒数。语法Timer说明Microsoft Windows中,Timer函数返回一秒的小数部分。Timer 函数示例
    本示例使用 Timer 函数来暂停应用程序。同时用 DoEvents 在暂停期间将控制让给其他进程。 Dim PauseTime, Start, Finish, TotalTime
    If (MsgBox("Press Yes to pause for 5 seconds", 4)) = vbYes Then
       PauseTime = 5   ' 设置暂停时间。
       Start = Timer   ' 设置开始暂停的时刻。
       Do While Timer < Start + PauseTime
          DoEvents   ' 将控制让给其他程序。
       Loop
       Finish = Timer   ' 设置结束时刻。
       TotalTime = Finish - Start   ' 计算总时间。
       MsgBox "Paused for " & TotalTime & " seconds"
    Else
       End
    End If