JavaScript随机正数或负数

Ash*_*lue 41 javascript random

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

zie*_*mer 117

不要使用现有功能 - 只需拨打电话即可Math.random().如果<0.5则为-1,否则为1:

var plusOrMinus = Math.random() < 0.5 ? -1 : 1;
Run Code Online (Sandbox Code Playgroud)

  • 工作完美,有趣我无法在网上找到答案. (4认同)

maj*_*man 49

我一直都是粉丝

Math.round(Math.random()) * 2 - 1
Run Code Online (Sandbox Code Playgroud)

因为它只是有道理.

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

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

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

直观!


Rob*_*obG 11

就是图个好玩儿:

var plusOrMinus = [-1,1][Math.random()*2|0];  
Run Code Online (Sandbox Code Playgroud)

要么

var plusOrMinus = Math.random()*2|0 || -1;
Run Code Online (Sandbox Code Playgroud)

但要使用您认为可维护的内容.


new*_*rts 11

为什么不尝试:

(Math.random() - 0.5) * 2
Run Code Online (Sandbox Code Playgroud)

50%的可能性具有负值,并且还具有生成随机数的额外好处.

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

Math.ceil((Math.random() - 0.5) * 2) < 1 ? -1 : 1;
Run Code Online (Sandbox Code Playgroud)