首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Math.random与算术移位

Math.random与算术移位
EN

Stack Overflow用户
提问于 2013-03-26 05:42:16
回答 1查看 703关注 0票数 1

如果我在JavaScript中有以下代码:

代码语言:javascript
复制
var index1 = (Math.random() * 6) >> 0;
var index2 = Math.floor(Math.random() * 6);

index1index2的结果介于06之间。

我必须混淆我对>>运算符的理解。我认为通过使用算术移位index1的结果将介于16之间。

但是,我注意到,如果我使用Math.floor()运算符,则不需要对index1使用>>>>

我知道我可以通过在两个索引中添加1来实现这一点,但是我希望有一个更好的方法来确保结果从16而不是添加1

我知道,位运算符将它们的操作数视为32位(0和1)的序列,而不是十进制、十六进制或八进制数。例如,十进制数9的二进制表示形式为1001。按位运算符在这种二进制表示上执行操作,但它们返回标准的JavaScript数值。

更新:

我在第26行的CAAT 教程中看到了最初的用法,我想知道它是否真的会在16之间返回一个随机数,而且它似乎只会在06之间返回一个随机数。因此,您将永远不会真正看到anim1.png鱼的图像!

提前感谢你的开悟。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-26 05:59:44

维基百科说:“(负数的算术右移就相当于除法,在有符号数字的补码表示法中使用零四舍五入,就像一些历史上的计算机使用的那样)。”

这并不是一个确切的答案,但是我们的想法是,>> 0确实是特定的,不应该在一般情况下用于获得1到6之间的范围。

大多数人都会告诉你

代码语言:javascript
复制
 Math.floor((Math.random()*10)+1);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15630141

复制
相关文章

相似问题

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