flash取出不重複亂數

最近一個案子需要寫亂數跳影格的功能,研究了一下找到了方法,我找的是我可以理解的方法.. 這個應該大家都有辦法理解。

簡單的說把一個陣列重新做排序,之後再取陣列的值就可以了。

原陣列:
var list:Array=new Array(1,2,3,4,5,6,7,8,9,10);
建立一個空陣列,要用來重新排序用的。
var randomList:Array=[];
之後使用while迴圈把隨機取出來的元素塞到randomList內
var r:int;
while(list.length>0){
r=int(Math.random()*list.length);
//由於 list 陣列中的元素會一個一個被取出並移除、所以最終 list 陣列將被清空、長度不大於 0 以致跳出 while 迴圈。
randomList.push(list.splice(r,1));
}

之後就可以從randomList[i]去跳轉影格了,每跳轉一次i就+1,這樣就可以完成隨機跳影格且不重複了。

參考資料:
使用 Math.random() 取亂數且不重覆的方法
AS3 快速產生不重覆亂數

留言