对于这段脚本:
var die = Math.floor(Math.random()*6 + 1);
预计会生成 1 到 6 之间的随机数。
圆形地板之前的骰子编号 6 为 6.0 至 6.999...999
但是,圆 Angular 地板之前的骰子编号 1 为 1.00...001 到 1.99...999
<小时/>另外,因为它是(random_number * 6)(数字系统中的“进位”?)
(1到1.9999)中生成的数量是否可能与(2到2.999)中生成的数量不同?
(可能相差1)
<小时/>这在现实世界中是否实质性/可接受?例如公平地挑选 jack 流行的顾客。或者计算赌博的可能性。
或者,我做错了什么吗?
附:我不是数学/科学学生,所以我可能会错过很多数学概念。
最佳答案
这是一个简单的测试:
<div id="msg"></div>
<script type="text/javascript">
function rollDice() {
return Math.random()*6 + 1 | 0;
}
function testDice() {
var results = [,0,0,0,0,0,0];
var i = 100000;
var n;
while (i--) {
results[rollDice()] += 1;
}
return results;
}
document.getElementById('msg').innerHTML = testDice();
</script>
在 IE 中,我得到:,16768,16783,16546,16862,16447,16594
。对我来说这看起来相当均匀,但您可能需要运行几次并比较结果。
关于javascript - 掷骰子脚本分布均匀吗? (使用 Math.random()),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11009293/