如何在画布中获得随机1或-1(javascript)

How to get random 1 or -1 in canvas (javascript)?

本文关键字:javascript 随机 布中获      更新时间:2023-09-26

如何在画布中获得随机-1或1(不在-1或1之间,只有-1或1,只有这两个值)?

我知道要获得随机数,我可以使用:

Math.random()

但我只想要随机的1或-1。

var plusOrMinus = Math.random() < 0.5 ? -1 : 1;

(请使用搜索第一个JavaScript随机正数或负数)

您可以这样做:

var n = (Math.random()>=0.50)?1:-1;

如果有人不了解ternar运算符的工作原理,我会用另一种方式写同样的运算符:

var value;
if(Math.random() > 0.5) value = 1;
else value = -1;

俯卧撑,固定昏迷。thx。

不使用分支的解决方案:

((Math.random()+0.5)<<1)-1

此解决方案使用的公式将[0,1]间隔匹配到{-1,1}集中
在这里,我使用floor来做到这一点。

让我们看看如何:如果我在Math.random()上加0.5,我现在是[0.5,1.5]。
铺地板后,结果在{0,1}集中
现在您可以乘以2=>{0,2}集
现在移除1=>{-1,1}集。

所以公式是这样的:

2*Math.floor(Math.random()+0.5)-1

更快(但更神秘:-))使用轮班操作员:

((Math.random()+0.5)<<1)-1

不幸的是。。。分支速度更快,正如您在这里看到的(在控制台中查看)。

https://jsfiddle.net/h6d8bthd/