PDA

Просмотр полной версии : random без повторов


otlichnic
13.06.2010, 23:48
Плиз, помогите пожалуйста.
Есть код:

var random_arr:Array = new Array();

function randRange(min:Number, max:Number):Number {
var randomNum:Number = Math.floor(Math.random() * (max - min + 1)) + min;
return randomNum;
}

for (var i = 0; i < 10; i++) {
var n:Number = randRange(1, 50);
random_arr.push(n);
trace(random_arr);
}
Мне нужно, чтобы random_arr не содержал в себе повторяющиеся числа...
Спасибо!

rainbowrussia
14.06.2010, 00:40
Внутри цикла организуйте еще один вложенный цикл от 0 до i-1 в котором проверяйте, не заносили ранее ли в массив очередное сгенерированное число.

Хемуль
14.06.2010, 17:48
Если речь идёт о том, чтобы сгенерировать последовательность случайных целых чисел от MIN_VALUE до MAX_VALUE и выбрать из них NUM_SELECTED_VALUES значений, то можно так:

var MIN_VALUE:Number = 1;
var MAX_VALUE:Number = 50;
var NUM_SELECTED_VALUES:Number = 10;

var tempArray:Array = new Array();
var resultArray:Array = new Array();

for (var i:Number = 0; i <= MAX_VALUE - MIN_VALUE; i++)
{
tempArray.push(MIN_VALUE + i);
}

while (resultArray.length < NUM_SELECTED_VALUES)
{
resultArray.push(tempArray.splice(randRange(0, tempArray.length - 1), 1));
}

function randRange(min:Number, max:Number):Number
{
return Math.round(Math.random() * (max - min)) + min;
}

Чтобы проверить результат, можно ниже дописать что-то вроде:

for (var j:Number = 0; j < resultArray.length; j++)
{
trace("resultArray[" + j + "]: " + resultArray[j]);
}

otlichnic
14.06.2010, 23:10
Суппер! То что нужно! Огромное Спасибо!

Cosmobomja23
31.08.2011, 03:57
Вот такой вариант использую у себя, всё прекрасно работает.
var selectFrom = ["Ог1", "Ог2", "Ог3"];
Контент.Фото2.Маска.gotoAndPlay(selectFrom[Math.floor(Math.random()*selectFrom.length)]);

В данном случае код выбирает эффект для перехода между фотографиями, но часто случаются повторы одинаковых переходов подряд, даже по 3 раза)

Помочь можете???
Нужно дописать условие, которое будет сравнивать выбор с предыдущим и запрещать его выбирать, если они совпадают. Походу нужен массив, но я не разобрался еще с ним.