Luar's Flash Playground:兩個簡單快速產生亂序數字的Flash Lite 1.1程式碼
兩個簡單快速產生亂序數字的Flash Lite 1.1程式碼 (12-03-2007)
方法1

在Web版Flash開發中,我們可以用兩個Array(A,B)容易地幫助產生亂序數字,先將順序數字放進Array A,Random一個Array Index,將值放到Array B,原來元素被splice()去,基於Array A目前length作Random範圍,再重複進行。

不過,Flash Lite 1.1沒有Array,我們要用eval()來模擬Array;同時,沒有splice(),要將Array A最後元素取代被抽出元素,人工地減少Array A Length。
// arrStr用來trace偵錯,你可以刪除它相關程式碼
taLen = 10;
for (i=0; i<taLen; i++) {
    set("ta" add i, i);
}
arrStr = "";
for (j=0; j<10; j++) {
    ran = random(taLen);
    set("wa" add j, eval("ta" add ran));
    arrStr = arrStr add eval("wa" add j) add ", ";
    set("ta" add ran, eval("ta" add (taLen-1)));
    taLen--;
}
trace(arrStr);

方法2

先產生一個Array儲存順序數字,Random一個Array Index,將它的值個第1個Array原素互換,然後到第2個Array,如此類推…
taLen = 10;
for (i=0; i<taLen; i++) {
    set("ta" add i, i);
}
i = taLen;
while (i>0) {
    j = random(i);
    i--;
    tmp = eval("ta" add i);
    set("ta" add i, eval("ta" add j));
    set("ta" add j, tmp);
}
// arrStr用來trace偵錯,你可以刪除以下程式碼
arrStr = "";
for (i=0; i<taLen; i++) {
    arrStr = arrStr add eval("ta" add i) add ", ";
}
trace(arrStr);

備註: 方法2在記憶使用量和效能上都比方法1好。

本文章由發表。
同組文章