首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript math.floor和math.random问题

Javascript math.floor和math.random问题
EN

Stack Overflow用户
提问于 2021-01-14 06:26:07
回答 2查看 50关注 0票数 0
代码语言:javascript
复制
var letters = ["A", "B", "C", "D"];
var rnd = Math.random();
var rndK = letters[Math.floor(rnd*letters.length)];
return rndK;

我的问题是,我已经运行了几次,它有时会输出D,但我真的不明白为什么,因为据我所知,

代码语言:javascript
复制
math.random() returns a pseudorandom number between 0 and 1 but not 1,
math.floor() returns the highest integer that's less or equal to the value, rounding down essentially.

难道不应该只在rnd给出1时输出D,但由于math.floor()向下舍入,这应该是不可能的?我可能在这里遗漏了一些非常明显的东西,如果有人能为一个完全的javascript初学者解释一下,谢谢。

EN

回答 2

Stack Overflow用户

发布于 2021-01-14 06:30:58

你说得对,math.random()只返回0到1之间的值。将它乘以letters.length,也就是4,求底只会返回0到3之间的值,而不是4。这有时仍然会返回D,因为D的索引是3。记住,元素的索引是元素的位置减1。所以A的索引是0,B的索引是1,C的索引是2,D的索引是3。如果你不想返回D,可以用math.random()乘以letters.length - 1

票数 1
EN

Stack Overflow用户

发布于 2021-01-14 06:31:38

代码语言:javascript
复制
Math.floor(rnd*letters.length)

在您的情况下返回一个介于0和3之间的数字。因为letters.length === 4

letters[0] === "A"

letters[3] === "D"

因此,一切都按预期运行:)

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

https://stackoverflow.com/questions/65710678

复制
相关文章

相似问题

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