JavaScript - 随机函数结果之间的差异

标签 javascript

Math.floor(Math.random() * x) + 1的结果有区别吗和Math.ceil(Math.random() * x)

最佳答案

Math.random()生成浮点值 in the interval [0, 1)(从零包含到一不包含)。这意味着两种方法之间存在细微差别:

Math.ceil(Math.random() * x) 将生成区间 [0, x] 内的整数(从零开始含 到 x 包含)。这是因为 Math.ceil(0) 将返回零。虽然获得的几率极小。

function minRandom() { return 0; }
function maxRandom() { return 0.9999999; }

const x = 10;
console.log("min:", Math.ceil(minRandom() * x));
console.log("max:", Math.ceil(maxRandom() * x));

Math.floor(Math.random() * x) + 1 将生成区间 [1, x] 内的整数(从一个包含x 包含)。这是因为 Math.floor(Math.random() * x) 本身会生成区间 [0, x-1] 内的整数(包括零x-1 包含)。

function minRandom() { return 0; }
function maxRandom() { return 0.9999999; }

const x = 10;
console.log("min:", Math.floor(minRandom() * x) + 1);
console.log("max:", Math.floor(maxRandom() * x) + 1);

关于JavaScript - 随机函数结果之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72575359/

相关文章:

javascript - 对象的某些值的总和

javascript - 如何将 JavaScript ES6 map 对象显示到控制台?

javascript - 简单数据图网站高流量解决方案

javascript - 使用 jquery 捕获按键

javascript - 根据屏幕尺寸使用 jQuery 动态包裹 div

javascript - JavaScript 中的静态数组变量?

javascript - 用于检查 9 个字母单词中前两个字符必须为 "1 (numaric)-"的正则表达式,其余应为字母数字

JavaScript 函数 eval() 抛出堆栈外配额异常

javascript - 为什么 .forEach() 不能在 Array.prototype.fillB() 中工作? (自定义函数)

javascript - 手动自动生成href