flash as2.0数组随即排序问题

现有一个有规律的数组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;
}
这段函数就是段乱数组内部数字的 看不能理解其中的循环过程 求详解。如果数组内部不是这种规律的又要如何做呢

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。

温馨提示:内容为网友见解,仅供参考
无其他回答

flash as2.0数组随即排序问题
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;

flash as2.0---生成随机不重复的数字,随机的功能解决了,但不重复部分不...
顺序存储一组数字数组(如存储从0到12的数组A),用随机函数random(12)随机获取一个下标(如5,那么读取A[5],即6),将获取到的那个数字从数组里删除(好像是pop函数),然后再重新用random(11)随机获取,如此循环得到的随机数一定是不重复的。

[Flash] AS2.0中 关于 数组操作 和 排序效率 的疑问
意思是说 先用你的自定义方法排好序 然后再调用系统方法 对这个排好序的数组再排一次 把tester[i] = random(1000000);改成 tester[i] = i;然后分别注释下面两部分(运行一个 不同时运行两个)得出的结果 乱序使用sort会比较快 ,顺序非常好的用sort貌似比较慢 ...

求教Flash As2.0生成一个给定范围内,不等于某些指定数字的随机数
as2.0 function intRandomNEQ(range:Number):Number{arguments[0] = "";var str:String = arguments.join(",");\/\/2.0的Array没有indexOf方法,所以转成字符串再使用indexOf方法var arr:Array = new Array();for(var i:Number=0;i<range;i++){if(str.indexOf(","+i)==-1){arr.pus...

急求,数字选择器flash,从1到45滚动,点击一下就停,显示所选数字,再点...
import flash.events.MouseEvent;import flash.text.TextFormat;\/\/———自己设定的数据———var stuNum:int = 45;\/\/学生数量,也就是学号轮转最大数值 var stageWidth = 550;\/\/舞台的宽度,方便居中 var stageHeight = 400;\/\/舞台的高度,方便居中 var TF:TextFormat = new TextFormat();TF....

青帮我把下面flash3.0代码翻译为2.0 谢谢
这代码有问题。var arrayBuble:Array = new Array();这一行为什么要写进for循环?那样岂不是创建了400个数组对象?AS2.0 this.createEmptyMovieClip("holder",this.getNextHighestDepth());var arrayBuble:Array = new Array();holder._y = 750;for (var i:Number = 0; i<400; i++){ holde...

如何用Flash ActionScript 2.0实现记录(录音)功能
以上问题不是我想解决的,我想的是如何用flash actionscript2.0实现点击录音按钮可以开始录音,点击保存按钮可以将你的声音保存到本地,回放按钮可以在flash页面下回放你之前录制的音

FLASH代码
AS3:var sz:Array=new Array(100)for(var i:uint;i<sz.length;i++){ sz[i]=i+1 } var sum:uint for(var j:uint;j<sz.length;j++){ sum+=sz[j]} trace(sum)

急求,数字选择器flash,从1到45滚动,点击一下就停,显示所选数字,再点...
import flash.events.MouseEvent;import flash.text.TextFormat;\/\/———自己设定的数据———var stuNum:int = 45;\/\/学生数量,也就是学号轮转最大数值 var stageWidth = 550;\/\/舞台的宽度,方便居中 var stageHeight = 400;\/\/舞台的高度,方便居中 var TF:TextFormat = new TextFormat();TF....

相似回答