主题:  对随机+取整的测试

东方楚楚

职务:普通成员
等级:1
金币:0.0
发贴:44
注册:2000/10/25 1:32:58
#12002/3/11 16:42:25
对于取1-9(含1和9)的随机整数,有下面三种方法
A:Math.ceil(Math.random()*9-1)+1
B:Math.floor(Math.random()*9)+1
C:math.round(Math.random()*8)+1

到底哪种方法取得的随机概率比较均衡呢?
写了一段代码进行测试,测试时间一分钟,交叉各测三次,下面是结果:

一分钟内,0-9各数字出现的次数
A:
72 82 86 70 80 78 59 86 69
70 60 91 70 82 85 72 80 72
71 71 87 70 93 81 58 79 72

B:
78 67 55 90 98 85 61 76 72
93 78 75 81 62 81 75 69 68
71 79 69 74 101 70 72 69 76

C:
33 90 91 86 73 90 98 81 40
39 107 86 76 98 88 80 72 32
43 77 87 82 87 82 93 86 45

结论:以后做随机游戏时,再也不敢用math.round函数啦。。。。



turbine

职务:普通成员
等级:1
金币:0.0
发贴:10
注册:2002/2/4 18:04:01
#22002/3/11 17:38:46
晕~
你可以真有耐性~
顺便再测试一下random(9)+1各个数的几率是多少?



金山羊

职务:普通成员
等级:4
金币:10.0
发贴:827
注册:2002/1/6 14:44:13
#32002/3/11 19:43:43
结果不错啊


5d.cn
FLASHDEP
TECHNOLOGY SUPPORT
JAVA/ACTIONSCRIPT/javascript
CFML/JSP/COLDFUSION/FLASH REMOTING
JRUN/COLDFUSIONMX
FLASH/DREAMWEARER

foxet

职务:普通成员
等级:1
金币:1.0
发贴:163
注册:2001/11/10 21:28:33
#42002/3/11 20:23:32
goldgoat在上个帖子中说
引用:
结果不错啊

我倒;这都可以;不完全归纳法



chocobo

职务:普通成员
等级:1
金币:0.0
发贴:15
注册:2001/2/18 12:02:11
#52002/3/11 21:37:20
由结果可得……你的程序错啦,去查查AS字典,第三句跟前两句不等价啊



东方楚楚

职务:普通成员
等级:1
金币:0.0
发贴:44
注册:2000/10/25 1:32:58
#62002/3/12 8:44:37
啊?
不得头绪,chocobo能不能给讲讲?



chocobo

职务:普通成员
等级:1
金币:0.0
发贴:15
注册:2001/2/18 12:02:11
#72002/3/12 13:08:35
Math.round是四舍五入,其他两个不是啊

0~0。4跟0。5~1。4 ,你说那个发生的次数多?当然是后者比前者多一倍啦



东方楚楚

职务:普通成员
等级:1
金币:0.0
发贴:44
注册:2000/10/25 1:32:58
#82002/3/12 14:25:42
哈哈哈,这么一想,的确是的啦!
怪不得用round函数的话,1和9出现次数会这么低。
不过这么一想,也不用测试了,就知道用这个方法取随机整数不合理。