2013-12-11 39 views
0

一个非常快速的问题。我正在使用一些Flash网络广告到Google联网,但不允许使用math.random()。有没有什么办法可以用一个自定义数组来替代它,这种模仿随机性的方法,例如用AS3中的数组替换math.random()

var MyArray:Array = [3,6,4,3,6,7,4,6​​,3,3,5]。

基本上我只需要知道如何用下面的语句中的数组中的数字替换math.random。如果顺序提取数字,这不是问题。

function myFunction():void { 
    myVariable = myVariableTwo + Math.random()*myVariableThree; 
} 

我是否需要遍历数组并提取数字,如果是这样的话?

我仍然在AS3上摸索着自己的方式,所以不要害怕像对孩子说话那样解释它。

任何帮助将非常感激。

+0

使阵列与手动添加数字,例如[2,4,9,0,8,4,3,4,1,1,1,0]。你应该事先知道你需要多少次这个数组中的数字。那么,如果你需要一个数字,请调用myArray.shift()。这会给你数组的第一个孩子,同时也将它从数组中移除。所以在你的例子数组的第一次运行中,在shift()之后,我们会有[4,9,0,8 ... etc]。你也可以存储你从数组中移出的值,使用它,然后再次使用myArray.push将其放在数组顶部(某些值) – DodgerThud

+0

@DodgerThud非常感谢您的关注和帮助解决问题! – dblaursen

回答

0

您可以通过函数调用实现random seed algorithm而不使用Math.random,但由于它们不喜欢使用Math.random,所以它们可能不喜欢您基本上以不同形式模拟它的行为。

的替代方案是只具有伴随着它返回该阵列的第一个元素和推回上的端部的函数的结果的固定阵列,以被再利用:

package Rnd 
{ 
    public class Rnd 
    { 
     private static var VALUES:Array = [ 1, 5, 4, 5, 3, 8, 3, 2, 1, 1, 6, 9 ]; 

     public static function getValue():uint 
     { 
      var val:uint = Rnd.VALUES.shift(); 
      Rnd.VALUES.push(val); 
      return val; 
     } 
    } 
} 
+0

就在当场!谢谢一堆! – dblaursen