首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JavaScript -随机函数结果的差异

JavaScript -随机函数结果的差异
EN

Stack Overflow用户
提问于 2022-06-10 13:45:23
回答 2查看 73关注 0票数 2

Math.floor(Math.random() * x) + 1Math.ceil(Math.random() * x)的结果有什么不同吗?

EN

回答 2

Stack Overflow用户

发布于 2022-06-10 13:56:54

Math.random()生成浮点值in the interval [0,1) (从零包含到一个排它)。这意味着这两种方法略有不同:

Math.ceil(Math.random() * x)将在区间0,x (从零包含到x包含)中生成整数。这是因为Math.ceil(0)将返回一个零。尽管获得这一机会的可能性极小。

代码语言:javascript
运行
复制
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 (0包含到x-1包含)中生成整数。

代码语言:javascript
运行
复制
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);

票数 2
EN

Stack Overflow用户

发布于 2022-06-10 13:57:36

是的,有区别。

第二个版本可能会意外地返回零,尽管这个可能性很小。

如果Math.random()本身正好返回0.0,则会发生这种情况,合法情况下是可以的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72575359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档