Rnd * 10有否可能产生0? Rnd * 10有否可能产生0? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Rnd 产生小于1而大于或等于0的数字,当然可能是0了。 自己试上1亿次:Private Sub Command1_Click()Dim i As Long, temp As Single, k As LongFor i = 1 To 100000000temp = Rnd * 10If temp = 0 Then k = k + 1NextMsgBox kEnd Sub应该返回大于1的一个数 0 <= Rnd <1正解 从理论上来说0<=rnd<1,所以等于0是可能的。经过试验证明确实可以,并且如果结果精度越大,那么等于0的几率就越小。当数据精度只有1位的时候,等于0的概率是1/2,当数据是2位时几率为1/4,当数据是8位时几率是1/2^8。 无聊……找了个出来……如果VB的随机数发生器不是硬件相关的话下面这个应该就算了~Private Sub Form_Click() Dim i As Long Rnd -1 Randomize 282 For i = 1 To 19281 Rnd Next Me.Print RndEnd Sub Rnd 是返回大于等于0而小于1的随机数,所以Rnd*10绝对可能产生0的结果,只是概率的问题! 决对不可能产生0,因为RND产生的是0-1之间的小数,你想想,用一个小数乘以10,能不能产生0?就算这个小数再小,它乘以10之后一定是不会产生0的,你如果产生了0,那你把你的程序给我发过来,看是不是你写的有问题。 0<=rnd<1,MSDN这么说,所以肯定会有0出现,没必要争。wjbych说产生0-1之间的小数,错误,除非0<rnd<1. 脱开精度讲取值其实意义不大,只适合作理论研究一般比如取整 int(rnd*10) 范围就是 0 1 2 3 4 5 6 7 8 9cint(rnd*10) 结果范围是 1 2 3 4 5 6 7 8 9 10 listview的奇怪的现象?如何解答? 简单问题~关于treeview的勾选问题! 如何制作一个启动画面! 请教VB开发环境如何默认找开d:\vbsql 目录中的文件呢? 好惭愧啊,这个问题我琢磨了半天还是没搞清,请高手指点一下.我在等. 如何在VB类中实现像: 类.函数.属性? 制作软件的收费问题 麻烦各位帮我改一下,谢谢 怎么实现中英文占相同的大小? 我的QQ号被人盗用,我是用自己的身份证做证件号的,但是提问与提问内容被改,我如何才能要回我的QQ号呢? 帮忙关于数据库的--新学很菜 请问我新做了一个控件,但是我怎么知道classid是什么呢?谢谢。
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的一个数
正解
经过试验证明确实可以,并且如果结果精度越大,那么等于0的几率就越小。
当数据精度只有1位的时候,等于0的概率是1/2,当数据是2位时几率为1/4,当数据是8位时几率是1/2^8。
下面这个应该就算了~Private Sub Form_Click()
Dim i As Long
Rnd -1
Randomize 282
For i = 1 To 19281
Rnd
Next Me.Print Rnd
End Sub
就算这个小数再小,它乘以10之后一定是不会产生0的,你如果产生了0,那你把你的程序给我发过来,看是不是你写的有问题。
wjbych说产生0-1之间的小数,错误,除非0<rnd<1.
一般比如取整 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