Private sub form1_load
dim s as integer
s=int(rnd*10)
text1.text=s
end sub
  每次执行以上代码时,S的第一次总是为7,当然,如果添加一个FOR循环的话
S是随机变化的。但只要一执行,S的第一次总是为7,而不会为其他数!
  我正在做一个游戏,类似五子棋,需要在随机位置弹出随机颜色的彩球
让我郁闷的是,每次打开游戏,总是在同一位置弹出同一颜色的球
不知各位有没办法?

解决方案 »

  1.   

    Private sub form1_load
    randomize    '在rnd之前加上这句
    dim s as integer
    s=int(rnd*10)
    text1.text=s
    end sub
      

  2.   

    Dim s As Integer
        Randomize Timer
        s = Int(Rnd * 10)
        Text1.Text = CStr(s)
      

  3.   

    inftext说的对,只要Randomize就可以了.RND的参数不是这么用DI,乱用还会每次都生成一样的"随机"数...呵呵
      

  4.   

    randomize 要初始化一下,伪随机数
      

  5.   

    关注
    要弄清楚为什么这样必须了解Rnd的基本用法:
    对任何给定的初始种子,产生相同数值序列,因为对Rnd函数的每个后续调用均使 用前面的数作为序列中下一个数的种子。在调用Rnd之前,利用没有参数的 Randomize语句, 以系统时间为基准提供随机种子去初始化随机数生成器。
    为了在给定范围内产生随机整数,使用下列公式:Int((upperbound - lowerbound + 1) * Rnd + lowerbound)
    这里,upperbound是该范围的最大数值,lowerbound是该范围的最小数值。
      

  6.   

    用randomize产生新的随机种子,rnd的参数是最大的可能随机数
      

  7.   

    rnd(NUMBER) 产生的是伪随机数.如果 number 的值是 Rnd 生成 
    小于 0 每次都使用 number 作为随机数种子得到的相同结果。 
    大于 0 序列中的下一个随机数。 
    等于 0 最近生成的数。 
    省略 序列中的下一个随机数。 
      

  8.   

    先调用randomize初始化一下就行了
      

  9.   

    各位说得对,VB中的rnd()是假随机,可以先用randomize,再使用Rnd.这个问题不奇怪,在VB中就是这样的.
      

  10.   

    你可以试试给Randomize后面加一个固定的数,以后Rnd()生成的一系列数每次都不变。这可以用作加密。(注意,在Randomize之前必须用一下Rnd(-1),奇怪的规定但必须这样才有效果)
      

  11.   

    或者把rnd的参数设置为关于时间的复杂函数。
      

  12.   

    Dim s As Integer
        Randomize Timer
        s = Int(Rnd * 10)+1'习惯点
        Text1.Text = CStr(s)
      

  13.   

    现在的rnd函数用的都是“线性同余发生器”算法
    确定性的算法必然产生确定性的绝过
      

  14.   


    Randomize 语句
          初始化随机数生成器。语法Randomize [number]可选的 number 参数是 Variant 或任何有效的数值表达式。说明Randomize 用 number 将 Rnd 函数的随机数生成器初始化,该随机数生成器给 number 一个新的种子值。如果省略 number,则用系统计时器返回的值作为新的种子值。如果没有使用 Randomize,则(无参数的)Rnd 函数使用第一次调用 Rnd 函数的种子值。注意 若想得到重复的随机数序列,在使用具有数值参数的 Randomize 之前直接调用具有负参数值的 Rnd。使用具有同样 number 值的 Randomize 是不会得到重复的随机数序列的。