Actionscript 3 选择random并删除AS3

Actionscript 3 选择random并删除AS3,actionscript-3,random,Actionscript 3,Random,我在学校有这个项目。我们将创建一个应用程序,它将挑选出7个随机数,介于1-34之间,没有重复的数字,对它们进行排序,并将它们显示在一个文本框中。我不知道从哪里开始。要生成数字,您需要Math.random,排序数组。排序,显示文本字段: var len:uint = 7; var min:uint = 1; var max:uint = 34; var filled:uint; var result:Array = []; var random:int; //Filling collectio

我在学校有这个项目。我们将创建一个应用程序,它将挑选出7个随机数,介于1-34之间,没有重复的数字,对它们进行排序,并将它们显示在一个文本框中。我不知道从哪里开始。

要生成数字,您需要Math.random,排序数组。排序,显示文本字段:

var len:uint = 7;
var min:uint = 1;
var max:uint = 34;
var filled:uint;
var result:Array = [];
var random:int;

//Filling collection with random numbers
while (filled < len) {
    random = min + Math.random() * (max - min);
    if (result.indexOf(random) == -1) {
        result.push(random);
        filled++;
    }
}

//Sorting your collection, don't read further, if you want to do something yourself ;)
result.sort(Array.NUMERIC);

//Display result
var textField:TextField = new TextField();
textField.autoSize = TextFieldAutoSize.LEFT;
textField.text = result.toString();
addChild(textField);

有很多方法可以做到这一点。填充一个唯一的随机数数组的最快方法是用数字范围填充数组,在您的情况下是1-34之间的数组,然后将max变量设置为数组的长度-1(用于数组的最后一个索引)。然后在max变量大于0时实现while循环(while(max>0)),将数组的随机索引与当前max位置交换。我理解这听起来可能令人困惑,因此以下是一个示例:

//create our array of numbers, you could do this in a for loop or 
//set it as I have ( which saves you some performance )
var numbers = [ 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34 ];

var max:int = numbers.length-1; //set our max to the array length - 1
var randomIndex:int; //create the randomIndex variable
while( max > 0 ) {
    randomIndex = Math.random() * max; //pick a random index
    numbers[randomIndex] ^= numbers[max]; //swap the random index with our max
    numbers[max] ^= numbers[randomIndex];
    numbers[randomIndex] ^= numbers[max];
    max--; //decrease the max
}
numbers.length = 7; //set array length to 7 elements so you have 7 random numbers
这样做的目的是确保数组的每个元素都是唯一的,并且可以交换

这是在一定范围内随机生成一组唯一数字的最快也是最简单的方法。它也被称为

然后可以使用以下命令对数组进行数字排序:
numbers.sort(array.NUMERIC)

最后,要将其添加到
TextField
,您需要创建一个新的
TextField
,并使用
text
属性设置为
String
格式的数组值:

var textField:TextField = new TextField();
textField.text = numbers.toString();
addChild( textField );
以下是一些有关
TextFields
的文档,可帮助您了解:


将此功能放在任意位置

function getRandomNum(startNum, endNum, totalNumberGet):Array{
    var numbersArray:Array = [];
    var return:Array = [];

    for(var i:int = startNum; i <= endNum; i++){
        numbersArray.push(i);
    }
    for(var ii:int = 0; ii < totalNumberGet; ii++){
        var random:int = Math.random() * numbersArray.length;
        return.push(numbersArray[ii]);
        numbersArray.splice(ii,1);
    }
    result.sort(Array.NUMERIC);
    return result;
}
函数getRandomNum(startNum、endNum、totalNumberTarget):数组{ 变量编号数组:数组=[]; var返回:数组=[]; 对于(var i:int=startNum;i)您的问题太笼统了(我怀疑除非您更新它,否则它会因此关闭)。您在生成随机数方面有什么困难?确保它们是唯一的?对它们进行排序?显示它们?
function getRandomNum(startNum, endNum, totalNumberGet):Array{
    var numbersArray:Array = [];
    var return:Array = [];

    for(var i:int = startNum; i <= endNum; i++){
        numbersArray.push(i);
    }
    for(var ii:int = 0; ii < totalNumberGet; ii++){
        var random:int = Math.random() * numbersArray.length;
        return.push(numbersArray[ii]);
        numbersArray.splice(ii,1);
    }
    result.sort(Array.NUMERIC);
    return result;
}