Actionscript 3 生成10个随机数,不重复

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));

我这样做是为了生成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));
        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()
来过滤它们。