flash怎样取不重复的随机数
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
flash怎样取不重复的随机数
假如,你需要从全班同学中随机选择n个不重复的同学出来,怎么选?这就涉及到取不重复随机数的问题。
两种常用的方法:
1、用数组的splice属性,将选过的元素从源数组中删掉,这样就能保证取出去的不会重复。
var source_array:Array = new Array();
var new_array:Array = new Array();
var sourceLen:Number = 30;
var newLen:Number = 10;
for (i=0; i
}
for (j=0; j
trace("随机取得的一个索引数是"+index);
new_array[j] = source_array[index];
source_array.splice(index, 1);
}
trace("测试一下新数组的内容:"+new_array);
具体应用:
具体应用时,可以把以上代码修改定义成一个数组,方便使用。我用以下代码做一范例:
//===============================定义源数组和临时数组
my_str = "苏妙玲,洪辰,喻佳丽,刘忻,王艺洁,段林希,金银玲,陆翊,DL组合,李斯丹妮,付梦妮,孙昕欣,杨洋";
my_array = my_str.split(",");
mytemp = [];
//显示源数组
source_txt.text = my_array;
//=================================按钮控制选择
_btn.onRelease = function() {
//由于splice是会改变源数组的特性,不断按下按钮执行函数,元数组中的元素就会被删完,这时候就选不到了。
//为了演示每次能选n个的效果,每次让数组重赋值一边。
//不重新赋值也是一种应用。比如你每次选一个,在全部元素被删完以前,每次得到的都是不重复的随机数。在课件里定随机提问对象也是可以用到的。
for (var i = 0; i
}
new_txt.text = randNum(mytemp, 5);
};
//========================================================定义随机函数
function randNum(source_array:Array, newLen:Number) {
var temp_array:Array = source_array;
var new_array:Array = new Array();
var Num:Number = newLen;
for (j=0; j
tempLen = temp_array.length;
//从源数组中随机取一个索引数字出来
index = Math.floor(Math.random()*tempLen);
//把这个索引的元素提出来放到新数组中
new_array[j] = temp_array[index];
//元数组都被删完了,显示空值。
if (temp_array[index] == undefined) {
new_array[j] = "";
}
//再把已经提出来的这个元素从元数组中删除,保证下次不会再取到。
temp_array.splice(index, 1);
}
//现在新数组里就是不重复的元素了,把新数组返回
return new_array;
}
2、通过判断取到的元素是否重复,不重复才取。
i = 0;
total = 32;
rand_arry = new Array();
do {
rand_arry[i] = Math.ceil(Math.random()*32);
k = true;
for (j=0; jif (rand_arry[i] == ra
nd_arry[j]) {
k = false;
break;
}
}
if (k) {
i++;
}
} while (i<10);
//参数16,就是指定数值型数组,按照数值型进行比较,升序排列。
web = rand_arry.sort(16);
trace(web);