Math.round(Math.random()*9+1)的问题,怎么现在才发现...用Math.round(Math.random()*9+1) 模拟一亿次.从左到右依次对应1到10的出现次数的概率分布如下:5550975,11110994,11109952,11107453,11113482,11106273,11112448,11113637,11113936,5560850瞧瞧两头.我以前一直都是用的这句代码来产生随机数=.=后面我又用 Math.ceil(Math.random() * 10) 和 Math.floor(Math.random() * 10+1) 分别模拟了一亿次,概率分布都很正常~Math.ceil(Math.random() * 10) 9999674,10002663,9992580,9997330,10002808,10003604,9998316,9999602,10002274,10001149Math.floor(Math.random() * 10+1)9
问题描述:
Math.round(Math.random()*9+1)的问题,怎么现在才发现...
用Math.round(Math.random()*9+1) 模拟一亿次.
从左到右依次对应1到10的出现次数的概率分布如下:
5550975,11110994,11109952,11107453,11113482,11106273,11112448,11113637,11113936,5560850
瞧瞧两头.我以前一直都是用的这句代码来产生随机数=.=
后面我又用 Math.ceil(Math.random() * 10)
和 Math.floor(Math.random() * 10+1) 分别模拟了一亿次,概率分布都很正常~
Math.ceil(Math.random() * 10)
9999674,10002663,9992580,9997330,10002808,10003604,9998316,9999602,10002274,10001149
Math.floor(Math.random() * 10+1)
9998578,10000592,9995001,10003015,9999125,10001943,9999776,9999089,10002336,10000545
其实不用模拟一亿次,模拟1000次就可以看出来了.
答
round()方法通俗的说就是四舍五入,也就是生成的结果在1-1.4.之间就等于1,
1.5-2.4.之间等于2
.
9.5-10之间等于10
所以头尾出现的分布区间只有其他数字的一半,你现在得到的结果很正常