flash的可能性Math.random()返回1

时间:2013-01-03 15:15:23

标签: actionscript-3 flash random

我们都知道好老Math.random()。它返回0到1之间的随机浮点数。

我似乎无法找到任何证据,如果零或一个是排他性或包容性的。

我知道如果它们具有包容性,那么击中其中任何一个值的可能性就会非常低。

但是我不禁想知道我是否应该浪费if语句来寻找它。

在我目前的情况中,零不是问题,但一个是。

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

如果Math.random()中的1是独占的,那么我将知道永远不会是1,因此__rand永远不能等于myArray.length并且应该始终低于它...但是只是不确定如果我应该考虑它,我是否应该在一些性能关键代码中浪费时间。

PS:上面的代码不是性能关键代码,只是一个例子

基本上,只有两个简单的问题。 1)返回一个不可能或不可能。 2)如果可能,是否值得考虑。

2 个答案:

答案 0 :(得分:6)

根据docs

  

返回伪随机数n,其中0 <= n <1。这个号码   返回是以未公开的方式计算的,并且是   “伪随机”因为计算不可避免地包含一些   非随机性的元素。

所以它可以是0而不是1.你不必担心索引越界。

顺便说一下,如果这是真正的性能关键代码,那么最好不要将值转换为int或uint,而不是使用Math.floor(参见this performance test)。

答案 1 :(得分:4)

Math.random将返回介于0和(1独占)之间的数字。永远不会返回1。