方法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好。
|