Случайная строка в AS3

Я недавно работал над проектом AS3 с модулем, который работает так:

У меня есть 50 строк, и я выбираю одну из них случайным образом в данный момент времени. Когда я закончу с выбранным, я выбираю другой случайным образом из 49 левых снова и так далее.

Мне удалось решить эту проблему, используя вспомогательные массивы, для циклов, сопоставляя номера индексов со строками. Несмотря на то, что все работает нормально, мой код был очень запутанным и трудным для понимания.

Существует ли гораздо более простой и понятный способ решения этой проблемы в AS3?

Может быть, есть библиотека для получения случайных строк из строк?

2 ответа

Решение

Что-то простое, как этот класс:

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

Я не уверен, что вы хотите сделать с этой процедурой, но вот одно предложение:

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  
}
Другие вопросы по тегам