2015-11-02 32 views
0

當我調用下面的randomCharge函數時,它總是在控制檯日誌中輸出「1」。這讓我感到困惑,因爲我認爲「0」是包含性的,「1」是排他性的,所以如果範圍是「0」到「1」,Math.random函數永遠不會返回「1」(這也是數學.random默認測試)。這怎麼可能呢?這裏是我測試的代碼:當我執行一個Math.Random函數時,爲什麼它可以輸出「1」?

function randomCharge(min,max) { 
     return Math.random()* (max-min) + min; 
} 

var rand= Math.ceil(randomCharge(0,1)); 

console.log(rand); 
+1

它不是'random'功能,它是'Math.ceil' - 放在0.00001,當你執行你仍然可以得到1 ceil功能。由於'Math.ceil()',因此可以使用 –

+1

。 – Kita

+0

從數學上講,如果它是包含性的或排他性的,它並沒有太大的區別:從'(0,1)'中的隨機與從[0,1]中隨機的基本相同。儘管可能會發生,但獲得完全'0'或'1'的概率爲零。 – osa

回答

1

因爲rand不是隨機數發生器的輸出;它是輸出的天花板,它被定義爲大於或等於輸出的最小整數。在你的情況,這是1

試試這個:

function randomCharge(min,max) { 
    return Math.random()* (max-min) + min; 
} 

var rand= randomCharge(0,1); 

console.log(rand); 
相關問題