gpt4 book ai didi

javascript - Math.random() 结果的数字

转载 作者:行者123 更新时间:2023-11-28 11:00:31 25 4
gpt4 key购买 nike

for (let i = 0; i < 999; i++) {
console.log("length-result:", (Math.random() + "").slice(2).length)
}

如果你执行这段代码,你会发现大部分结果都小于18

但是,从理论上讲,random() 结果的最后一位只有百分之十的机会为0。这意味着,只有百分之十的 length-result 可以小于 18

实时片段:

// Why are results of length 20 rare, rather than occurring ~90% of the time?

for (let i = 0; i < 999; i++) {
const str = Math.random() + '';
tbody.insertAdjacentHTML('beforeend', `<tr><td>${str.length}</td><td>${str}</td></tr>`);
}
td {
padding-right: 20px;
}
<table>
<tbody id="tbody">
</tbody>
</table>

你能告诉我是什么导致了 Math.random 的这种行为吗?

最佳答案

您正在检查小数点后的位数。与随机无关。

JavaScript 数字始终存储为 double float (64 位),遵循国际 IEEE 754 标准。 https://en.wikipedia.org/wiki/IEEE_754

从该链接的部分:字符表示:

The original binary value will be preserved by converting to decimal and back again using:[38]

  • 5 decimal digits for binary16
  • 9 decimal digits for binary32
  • 17 decimal digits for binary64 -> used in javascript
  • 36 decimal digits for binary128

关于javascript - Math.random() 结果的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57404317/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com