JavaScript随机数字1 /零实现

时间:2018-02-15 20:38:04

标签: javascript

您好我发现这段JS代码生成零或一:我不明白管道(ORing)是如何涉及的?

  var randomNum = ((Math.random () * 2 | 0) + 1) - 1; // random number between 0 and 1​

我找到了另一种方式

Math.floor(Math.random()*2)

实现了同样的目标。哪一个更受欢迎?

2 个答案:

答案 0 :(得分:7)

  

"我不明白管道(ORing)是如何参与的?"

管道是按位OR运算符,在这里只是用来摆脱随机数的小数部分的简短方法。

因此随机数会生成从01.9999999999的内容,而删除小数则会为您提供01

  

" 首选哪一个?"

我在一般代码中说明了首选项,因此Math.floor()

你也可以这样做:

var randomNum = Math.random() < 0.5 ? 0 : 1;

答案 1 :(得分:1)

您可以使用Math.round(Math.random()),它会进行舍入并仅返回零和一。它是平均分配的。

&#13;
&#13;
var i = 1e7,
    count = [0, 0];

while (i--) {
    count[Math.round(Math.random())]++;
}

console.log(count);
&#13;
&#13;
&#13;