javascript - 掷骰子脚本分布均匀吗? (使用 Math.random())

标签 javascript math

对于这段脚本:

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/

相关文章:

javascript - 有没有办法在react-navigation(react-native)中保存和恢复导航历史记录

python - 防止在 Python 中四舍五入为零

algorithm - 给定范围内的和与积

javascript - 将对象引用传递给要在 ngModel 中使用的 Angular2 组件

javascript - 使用 files.upload API 将 Excel 上传到 Slack - 文件上传,但已损坏

javascript - jQuery 模板插件 : how to create two-way binding?

javascript - 遍历列 JavaScript

java - 最小化累积浮点算术误差

c# - 如何在不存储一副牌的情况下实现经销商类?

javascript - X 除以 Y,最小值为 1