Rnd * 10有否可能产生0?

解决方案 »

  1.   

    Rnd 产生小于1而大于或等于0的数字,当然可能是0了。
      

  2.   

    自己试上1亿次:Private Sub Command1_Click()
    Dim i As Long, temp As Single, k As Long
    For i = 1 To 100000000
    temp = Rnd * 10
    If temp = 0 Then k = k + 1
    Next
    MsgBox k
    End Sub应该返回大于1的一个数
      

  3.   

    0 <= Rnd <1
    正解
      

  4.   

    从理论上来说0<=rnd<1,所以等于0是可能的。
    经过试验证明确实可以,并且如果结果精度越大,那么等于0的几率就越小。
    当数据精度只有1位的时候,等于0的概率是1/2,当数据是2位时几率为1/4,当数据是8位时几率是1/2^8。
      

  5.   

    无聊……找了个出来……如果VB的随机数发生器不是硬件相关的话
    下面这个应该就算了~Private Sub Form_Click()
        Dim i As Long
        
        Rnd -1
        Randomize 282
        
        For i = 1 To 19281
            Rnd
        Next    Me.Print Rnd
    End Sub
      

  6.   

    Rnd 是返回大于等于0而小于1的随机数,所以Rnd*10绝对可能产生0的结果,只是概率的问题!
      

  7.   

    决对不可能产生0,因为RND产生的是0-1之间的小数,你想想,用一个小数乘以10,能不能产生0?
    就算这个小数再小,它乘以10之后一定是不会产生0的,你如果产生了0,那你把你的程序给我发过来,看是不是你写的有问题。
      

  8.   

    0<=rnd<1,MSDN这么说,所以肯定会有0出现,没必要争。
    wjbych说产生0-1之间的小数,错误,除非0<rnd<1.
      

  9.   

    脱开精度讲取值其实意义不大,只适合作理论研究
    一般比如取整  int(rnd*10) 范围就是  0 1 2 3 4 5 6 7 8 9
    cint(rnd*10) 结果范围是 1 2 3 4 5 6 7 8 9 10