2013-01-03 27 views
0

我們都知道很好的舊Math.random()。它返回一個介於0和1之間的隨機浮點數。閃存Math.random()返回的可能性1

我似乎找不到任何證據是如果零或一個是排他性的或包容性的。

我知道,如果它們是包容性的,那麼觸及這些值中的任何一個的概率就會很低。

但我不禁想知道是否應該浪費一條if語句來尋找它。

在我目前的情況下,零不是一個問題,但一個是。

var __rand:uint = Math.floor(Math.random() * myArray.length); 
var result:String = myArray[__rand]; 

如果Math.random() 1是排他性的,那麼我就知道不會被1,因此__rand永遠無法平等myArray.length,應始終低於這一數值。但只是不知道我是否應該浪費如果我應該考慮一些性能關鍵代碼。

PS:上面的代碼不是性能的關鍵碼,只是一個例子

基本上,只要2簡單的問題。 1)返回一個不可能或可能。 2)如果可能,是否值得對它進行會計處理。

回答

4

Math.random將返回一個介於0和(1獨佔)之間的數字。絕不會返回1.

+0

正如Pixel Elephant的回答0所包含的那樣。 – catholicon

+0

是我寫的,還是不是? 0到1之間獨佔。 – HMarioD

+0

0 in * inclusive *即random()可以返回0,而1是* exclusive *即不會返回。 – catholicon

6

作爲每docs

返回一個僞隨機數n,其中0 < = N < 1.返回以保密方式計算的數目 ,並且是 「僞隨機」,因爲計算不可避免地包含一些非隨機性元素。

因此它可以是0但不是1.您不必擔心索引超出範圍。順便說一下,如果這確實是性能嚴重的代碼,那麼最好是將值作爲int或uint而不是使用Math.floor(請參見this performance test)。

+0

性能測試很好知道,謝謝 – Gone3d