Цитата:
Сообщение от Hauts
 Код AS1/AS2:
var randoms = [];
function getRandomNum() {
var rnd = Math.floor(Math.random()*1000);
if (randoms[rnd] != true) {
randoms[rnd] = true;
return rnd;
} else {
return getRandomNum();
}
}
for (var k = 0; k<100; k++) {
trace(getRandomNum());
}
Примерно такое я имел в виду.
|
Этот способ нужно применять если количество возможных значений много больше чем возможное количество сгенерированных случайных чисел. Иначе можно превысить 256 уровней рекурсии. Даже без превышения будет много лишних вычислений.
Если значений не много, то лучше из массива выбирать:

Код AS1/AS2:
var array:Array = [ 1, 2, 3, 4, 5 ];
function getRandom():Number
{
return array.splice(Math.floor(Math.random() * array.length), 1)[0];
}
var length:Number = array.length;
for (var i:Number = 0; i < length; i++)
{
trace(getRandom());
}
upd: мой способ меня уже опередил
