0

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

我似乎找不到任何证据表明零或一是排他性还是包容性。

我知道,如果它们具有包容性,那么达到其中任何一个值的概率都非常低。

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

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

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

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

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

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

4

2 回答 2

6

根据文档

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

所以它可以是0但不是1。你不必担心索引超出范围。

顺便说一句,如果这真的是性能关键代码,最好将值转换为 int 或 uint 而不是使用 Math.floor(请参阅此性能测试)。

于 2013-01-03T15:20:30.023 回答
4

Math.random 将返回一个介于 0 和(1 除外)之间的数字。永远不会返回 1。

于 2013-01-03T15:20:18.203 回答