Re: [問題] 陣列元素之重新排列

看板Flash作者 (熊)時間14年前 (2009/08/02 01:37), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/3 (看更多)
※ 引述《ginnz (go)》之銘言: : 設陣列arr1中有n個為一的元素 其他為零 : 如何將原來值為一的元素 亂數替換成 值為1~n 且不重複的元素呢? : ex: arr1=[1,1,0,1,0] : => brr1=[2,3,0,1,0] : or arr1=[0,1,1,1,1] : =>brr1=[0,4,2,1,3] : 感謝! // 沿用命名方式XD // 已知: arr1, n var brr1:Array = arr1.slice (); // 拷貝一份arr1到brr1 var i:uint; var arrPool:Array = new Array (); for (i = 1; i <= n; i++) { // 先建一個固定內容的亂數池 (1~n) arrPool.push (i); } var numBrr1:uint = brr1.length; for (i = 0; i < numBrr1; i++) { if (brr1 [i] == 1) { // 從亂數池中剩下的數字隨機擇一 var selectedId:uint = Math.random () * arrPool.length; brr1 [i] = arrPool [selectedId]; arrPool.splice (selectedId, 1); // 被選走的就刪掉(length會減一) } } 剛好手邊沒有flash編譯軟體 只是先打起來放 所以不能確定有沒有bug 但是意思應該沒有錯吧~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.123.103.228
文章代碼(AID): #1AT7qyYu (Flash)
文章代碼(AID): #1AT7qyYu (Flash)