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;
}
这段函数就是段乱数组内部数字的 看不能理解其中的循环过程 求详解。如果数组内部不是这种规律的又要如何做呢
展开
 我来答
局势君
2011-05-24 · 知道合伙人教育行家
局势君
知道合伙人教育行家
采纳数:409 获赞数:466

向TA提问 私信TA
展开全部
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;
追问
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。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式