需要随机产生1-20之间的数,数字越小,出现的概率越高。请教大家,该怎么写?
2 回答
慕侠2389804
TA贡献1719条经验 获得超6个赞
1+Math.floor(Math.random()*Math.random()*20)Math.random()的几率是相等的,结果在0到1之间,落在0到0.5和0.5到1之间的概率都是0.5;两个Math.random()相乘落在0到0.5之间的概率是3/4,落在0.5到1之间的概率是1/4,因为只有当两次Math.random()的结果都在0.5以上时,结果才会在0.5到1之间。所以多个Math.random()相乘会使数越小出现的概率越高。Update:上面所说的:两个Math.random()相乘落在0到0.5之间的概率是3/4,落在0.5到1之间的概率是1/4,因为只有当两次Math.random()的结果都在0.5以上时,结果才会在0.5到1之间。落在0到0.5之间的概率是3/4,落在0.5到1之间的概率是1/4,应该是不对的。因为即使两次Math.random()的结果都在0.5以上时,结果也不一定会在0.5到1之间,比如0.6*0.6=0.36;0.7*0.7=0.49,所以上面的描述更正如下:两个Math.random()相乘落在0到0.5之间的概率大于3/4,落在0.5到1之间的概率小于1/4,因为只有当两次Math.random()的结果都在0.5以上时,结果才有可能会在0.5到1之间。感谢@manggo指正!
千巷猫影
TA贡献1829条经验 获得超7个赞
每次都重置种子也是这样吗??取1000次看看,每个数的出现的次数是否正态分布??如果是,那就是自己的感觉问题了,我也经常感觉,边界数好像一次也没有取到。
添加回答
举报
0/150
提交
取消