2013-12-11 43 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