JavaScript随机正数或负数
我需要创build一个随机-1或1来乘以一个已经存在的数字。 问题是我目前的随机函数产生一个-1,0或1.什么是最有效的方法呢?
不要使用你现有的函数 – 只要调用Math.random()
。 如果<0.5那么-1,否则1:
var plusOrMinus = Math.random() < 0.5 ? -1 : 1;
我一直是的粉丝
Math.round(Math.random()) * 2 - 1
因为它只是有道理的。
-
Math.round(Math.random())
会给你0或1 -
乘以2的结果会给你0或2
-
然后减1会给你-1或1。
直观!
就是图个好玩儿:
var plusOrMinus = [-1,1][Math.random()*2|0];
要么
var plusOrMinus = Math.random()*2|0 || -1;
但是使用你认为可以维护的东西。
以前的答案显示有很多方法可以做到这一点。
Math.round()和Math.random的最快组合:
// random_sign = -1 + 2 x (0 or 1); random_sign = -1 + Math.round(Math.random()) * 2;
你也可以使用Math.cos()( 也是很快的 ):
// cos(0) = 1 // cos(PI) = -1 // random_sign = cos( PI x ( 0 or 1 ) ); random_sign = Math.cos( Math.PI * Math.round( Math.random() ) );
你为什么不试试:
(Math.random() - 0.5) * 2
有50%的机会产生负值,还会产生一个随机数。
或者,如果真的需要-1/1:
Math.ceil((Math.random() - 0.5) * 2) < 1 ? -1 : 1;