
flash as2.0数组随即排序问题
现有一个有规律的数组arr:Array=[1,2,3,4,5,6,7]要将其打乱让其里面的数随机排序且所有数字还在该数组中。求详细解法varn_array:Array;v...
现有一个有规律的数组arr:Array=[1,2,3,4,5,6,7] 要将其打乱让其里面的数随机排序且所有数字还在该数组中。求详细解法
var n_array:Array;
var tmp:Number;
var snd:Number;
for (var i:Number = 0; i<n_array.length; i++) {
snd = random(n_array.length);
tmp = n_array[i];
n_array[i] = n_array[snd];
n_array[snd] = tmp;
}
这段函数就是段乱数组内部数字的 看不能理解其中的循环过程 求详解。如果数组内部不是这种规律的又要如何做呢 展开
var n_array:Array;
var tmp:Number;
var snd:Number;
for (var i:Number = 0; i<n_array.length; i++) {
snd = random(n_array.length);
tmp = n_array[i];
n_array[i] = n_array[snd];
n_array[snd] = tmp;
}
这段函数就是段乱数组内部数字的 看不能理解其中的循环过程 求详解。如果数组内部不是这种规律的又要如何做呢 展开
1个回答
展开全部
snd = random(n_array.length);
//数组长度为7,获得一个0-7之间的随机数(小数),建议这样写 snd=Math.round(Math.random(n_array.length));
//下面三行是吧第i个变量和第snd个数字交换。
tmp = n_array[i];
n_array[i] = n_array[snd];
n_array[snd] = tmp;
//数组长度为7,获得一个0-7之间的随机数(小数),建议这样写 snd=Math.round(Math.random(n_array.length));
//下面三行是吧第i个变量和第snd个数字交换。
tmp = n_array[i];
n_array[i] = n_array[snd];
n_array[snd] = tmp;
追问
snd是随机抽取可能会出现重复,但最后的结果没有重复
能帮我细说一下这段么
tmp = n_array[i];
n_array[i] = n_array[snd];
n_array[snd] = tmp
追答
要想不重复,就要单独写一个生产随机数的函数,每次生成的snd保存下来,每次生成的数跟之前的作比较,相同了再次生成,不同才返回,这样避免重复。
程序中交换两个数b和c的公式:
a=b;
b=c;
c=a;
//把b先复制给一个临时变量a,然后b=c,然后c=a。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询