作者esabear (熊)
看板Flash
标题Re: [问题] 阵列元素之重新排列
时间Sun Aug 2 01:36:50 2009
※ 引述《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