String AS3中的随机字符串

String AS3中的随机字符串,string,actionscript-3,random,code-cleanup,String,Actionscript 3,Random,Code Cleanup,我最近在AS3项目中使用了一个模块,其工作原理如下: 我有50个字符串,我在给定的时间随机挑选其中一个。当我完成挑选的一个,我选择另一个剩下的49再次随机等等 我设法使用助手数组解决了这个问题,对于循环,使用字符串映射索引号。虽然每件事都很好,但我发现我的代码非常混乱,很难理解 在AS3中有没有更简单更干净的方法来解决这个问题 也许有一个从字符串中提取随机字符串的库?我不确定您想用这个过程做什么,但这里有一个建议: var stringArray:Array = new Array("strin

我最近在AS3项目中使用了一个模块,其工作原理如下:

我有50个字符串,我在给定的时间随机挑选其中一个。当我完成挑选的一个,我选择另一个剩下的49再次随机等等

我设法使用助手数组解决了这个问题,对于循环,使用字符串映射索引号。虽然每件事都很好,但我发现我的代码非常混乱,很难理解

在AS3中有没有更简单更干净的方法来解决这个问题


也许有一个从字符串中提取随机字符串的库?

我不确定您想用这个过程做什么,但这里有一个建议:

var stringArray:Array = new Array("string1", "string2", "string2"); //your array with strings
var xlen:uint = stringArray.length-1; //we get number of iterations
for (var x:int = xlen; x >= 0; x--){ //we iterate backwards
var randomKey:Number = Math.floor(Math.random()*stringArray.length); //gives you whole numbers from 0 to (number of items in array - 1)
stringArray.splice(randomKey,1); //remove item from array with randomKey index key
 var str:String = stringArray[randomKey]; //output item into new  string variable or do whatever  
}

我不确定你想用这个程序做什么,但这里有一个建议:

var stringArray:Array = new Array("string1", "string2", "string2"); //your array with strings
var xlen:uint = stringArray.length-1; //we get number of iterations
for (var x:int = xlen; x >= 0; x--){ //we iterate backwards
var randomKey:Number = Math.floor(Math.random()*stringArray.length); //gives you whole numbers from 0 to (number of items in array - 1)
stringArray.splice(randomKey,1); //remove item from array with randomKey index key
 var str:String = stringArray[randomKey]; //output item into new  string variable or do whatever  
}

像这样简单的课程:

public class StringList
{

    private var _items:Array = [];

    public function StringList(items:Array)
    {
        _items = items.slice();
    }

    public function get random():String
    {
        var index:int = Math.random() * _items.length;
        return _items.splice(index, 1);
    }

    public function get remaining():int{ return _items.length; }

}
及其用法:

var list:StringList = new StringList(['a', 'b', 'c', 'd']);

while(list.remaining > 0)
{
    trace(list.random);
}

像这样简单的课程:

public class StringList
{

    private var _items:Array = [];

    public function StringList(items:Array)
    {
        _items = items.slice();
    }

    public function get random():String
    {
        var index:int = Math.random() * _items.length;
        return _items.splice(index, 1);
    }

    public function get remaining():int{ return _items.length; }

}
及其用法:

var list:StringList = new StringList(['a', 'b', 'c', 'd']);

while(list.remaining > 0)
{
    trace(list.random);
}

您还可以使用Random randomNum=new Random();randomNum.next(n);//给出随机数[0,n)对不起,这是Java。这个:函数randomNumber(min:number,max:number):number{//good return Math.floor(Math.random()*(1+max-min)+min);}@Vlad这是C#……问题是关于AS3的?你也可以使用random randomNum=new random();randomNum.next(n);//给出随机数[0,n)抱歉,这是Java。这个:函数randomNumber(min:Number,max:Number):Number{//good return Math.floor(Math.random()*(1+max-min)+min);}@Vlad这是C#……问题是关于AS3的?