2016-02-12 24 views
-1

我試圖從1到5的數字中加或減1。如何進行隨機+或 - 值

到目前爲止,我有:

var number:int = Math.random() * 5; 

現在我想讓它隨機的,因爲無論是正面還是負面的。

我可以使用以下方法:

// use math random to pick 1 or 0 and if 0 then negative 
number = Math.random() * 1 ? number : number * -1; 

,但我不喜歡它。在我的隨機數學經驗中,數字總是爲0。有沒有更好的辦法?

+0

我不知道我是否應該創建另一個問題,但是有一些數學函數只是從1 - 3中選擇一個數?像'Math.pickANumberFrom(1,3);''''或'Math.pickAny(0,1,2);' –

回答

6
var plusOrMinusVal = Math.random() < 0.5 ? -1 : 1; 
1
Math.round(Math.random()) > 0 ? 1 : -1; 
  • Math.random() - 隨機從0到1,0.54398938
  • Math.round() - 輪數理性值,0.54398938現在是1
  • x > 0 ? 1 : -1 - 檢查是否x是大於0,分配1,否則-1,1大於0 - 分配1

function random(){ 
 
    document.querySelector('#number').innerHTML = Math.round(Math.random()) > 0 ? 1 : -1; 
 
}
<h3>You randomed: <span id="number">x</span></h3> 
 
<button onclick="random()">Try again</button>

+1

謝謝。你擊敗了系統夥計,http://imgur.com/9VSEieN StackOverflow無法相信你能回答如此之快! –

+3

那麼簡單的'[1,-1] [+(Math.random()> 0.5)]'還是使用三元運算符呢?四捨五入真的沒有意義。 –

+0

@Derek朕會功夫好,這是偏好的情況,我個人不喜歡硬編碼 –

1
Math.floor(Math.random() * 11) - 5; 

floor會給值的正態分佈而round不會爲最小值和最大值。但是,你應該記得加1來論證。另外,Math.random()從不返回1,這意味着在這種情況下,我們從來沒有從Math.floor得到11。最大可能值是10.