JavaScript随机正数或负数

时间:2011-12-23 02:59:19

标签: javascript random

我需要创建一个随机-1或1来将已存在的数字乘以。问题是我当前的随机函数生成-1,0或1.执行此操作的最有效方法是什么?

6 个答案:

答案 0 :(得分:113)

请勿使用现有功能 - 只需拨打Math.random()即可。如果< 0.5然后-1,否则1:

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

答案 1 :(得分:48)

我一直都是

的粉丝
Math.round(Math.random()) * 2 - 1

因为它只是有道理。

  • Math.round(Math.random())会给你0或1

  • 将结果乘以2将得到0或2

  • 然后减去1会得到-1或1.

直观!

答案 2 :(得分:11)

只为了它的乐趣:

var plusOrMinus = [-1,1][Math.random()*2|0];  

var plusOrMinus = Math.random()*2|0 || -1;

但请使用您认为可维护的内容。

答案 3 :(得分:11)

为什么不尝试:

(Math.random() - 0.5) * 2

具有负值的可能性为50%,并且还会产生随机数。

或者如果确实需要-1/1:

Math.ceil((Math.random() - 0.5) * 2) < 1 ? -1 : 1;

答案 4 :(得分:4)

以前的答案显示,有很多方法可以做到。

Math.round()和Math.random最快的组合:

// random_sign = -1 + 2 x (0 or 1); 
random_sign = -1 + Math.round(Math.random()) * 2;   

您也可以使用Math.cos()(which is also fast):

// cos(0) = 1
// cos(PI) = -1
// random_sign = cos( PI x ( 0 or 1 ) );
random_sign = Math.cos( Math.PI * Math.round( Math.random() ) );

答案 5 :(得分:0)

我正在使用underscore.js shuffle

username3:realm1:password3
username2:realm1:password2
username1:realm1:password1