Actionscript 3 生成10个随机数,不重复
我这样做是为了生成10个随机数,没有重复,但它不能正常工作。有时它会产生重复,但我不知道为什么。有人能告诉我代码有什么问题吗?它是否有indexOf的功能Actionscript 3 生成10个随机数,不重复,actionscript-3,Actionscript 3,我这样做是为了生成10个随机数,没有重复,但它不能正常工作。有时它会产生重复,但我不知道为什么。有人能告诉我代码有什么问题吗?它是否有indexOf的功能 var minArray:Array = new Array; var fortsett:Boolean = true; for(var i=0;i<10;i++) { while(fortsett) { var valgtTall=1 + Math.round(Math.random()*(34-1));
var minArray:Array = new Array;
var fortsett:Boolean = true;
for(var i=0;i<10;i++) {
while(fortsett) {
var valgtTall=1 + Math.round(Math.random()*(34-1));
if(minArray.indexOf(valgtTall,0) >= 0) {
fortsett=true;
trace(valgtTall + " er opptatt. Finner nytt...");
}
else {
fortsett=false;
}
}
minArray.push(valgtTall);
trace(valgtTall);
fortsett=true;
}
var minArray:Array=新数组;
var fortsett:Boolean=true;
对于(变量i=0;i=0){
fortsett=真;
跟踪(Valgtall+“er Opptat.Finner nytt…”);
}
否则{
fortsett=假;
}
}
米纳雷推(瓦格塔);
微量元素(瓦尔特塔尔);
fortsett=真;
}
一种简单且高度低效的方法是:
var numbers:Vector.<uint> = new Vector.<uint>();
loop: while(numbers.length < 10) {
var rand:uint = Math.random() * 10;
for (var i:uint = 0; i < numbers.length; ++i) {
if(rand == numbers[i]) {
continue loop;
}
}
numbers.push(rand);
}
var编号:向量=新向量();
循环:while(number.length<10){
var rand:uint=Math.random()*10;
对于(变量i:uint=0;i
另一种对我来说非常有效的方法:
var max:uint = 10; // max random number
var i:int = 0;
var l:int = 10; // length of sequence to generate
var id:uint = 0; // temp var for the ID
var ids:Vector.<uint> = new Vector.<uint>();
while (i < l)
{
// generate a new random number until we found one that doesn't exist yet
while (ids.indexOf(id) > -1) id = uint(Math.random()*max);
// add it to the list
ids.push(id);
// next!
i++;
}
var max:uint=10;//最大随机数
变量i:int=0;
变量l:int=10;//要生成的序列的长度
变量id:uint=0;//ID的临时变量
变量ID:Vector.=新向量();
而(i-1)id=uint(Math.random()*max);
//将其添加到列表中
id.push(id);
//下一个!
i++;
}
这对我来说很合适。它从不产生任何重复。您的代码看起来很好,请删除这一行trace(valgtall+“er-optatt.Finner-nytt…”)
,这会产生生成重复值的错觉。您应该trace(minArray)
,以确定代码完成后是否确实存在重复。我说应该没有,您通过正确地检查indexOf()
来过滤它们。