|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Как "перемешать" элементы в массиве?
Есть определенный массив:
как отсортировать массив - понятно, а вот как перемешать его - нет. Подскажите, пожалуйста, как быть?
__________________
Не стыдно спросить, стыдно не знать ! |
|
|||||
Как-то ваял.
package ru.kordum.utils { /** * @author KorDum */ public class ArrayShuffler { private static var _array:Array; //--------------------------------------------------------------------------- // // CONSTRUCTOR // //--------------------------------------------------------------------------- public function ArrayShuffler() { } //--------------------------------------------------------------------------- // // PRIVATE STATIC METHODS // //--------------------------------------------------------------------------- private static function startRandomize():void { var length:uint = _array.length; while (length--) { var n:int = Math.random() * (length + 1); swap(length, n); } } private static function swap(x:uint, y:uint):void{ var temp:* = _array[x]; _array[x] = _array[y]; _array[y] = temp; } //--------------------------------------------------------------------------- // // PUBLIC STATIC METHODS // //--------------------------------------------------------------------------- public static function randomize(array:Array, count:uint = 1):Array { if (!array) return null; _array = array.slice(); for (var i:uint = 0; i < count; i++) { startRandomize(); } return _array; } } }
__________________
тут я |
|
|||||
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
|
|
|||||
КорДум спасибо огромное, то что нужно
__________________
Не стыдно спросить, стыдно не знать ! |
|
|||||
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
Цитата:
|
|
|||||
По идее, нормальное ) Math.random() в as3 живет по этому закону. Чуви проводил эксперименты, рисовал графики. Потом дошел до метода какого-то там, наваял код, приводящий нормальное к равномерному, а я нагло стырил.
Добавлено через 8 минут А хотя по коду то же самое вообще у нас. Разве что у меня несколько раз можно "шуффлировать".
__________________
тут я |
|
|||||
__________________
adobe AS3 manual |
|
|||||
Пользуясь случаем.
Вот например я таким способом перемешиваю итемы которые должны появиться в игре. Итемов поровну - хороших (здоровье, броня) и плохих (мины, враги). И герой может выпить эликсир и его удача вырастает на 10%, на 20% или даже на 50%. Соответственно, нужно чтобы в этом массиве вероятность появления положительных итемов также вырастала (в зависимости от выпитого эликсира удачи). Вот как такое лучше сделать?
__________________
In Code We Trust |
|
|||||
listener
|
Astraport, не ясно, как это может соотноситься с перемешиванием.
"вероятность появления" тех или иных элементов в массиве и перемешивание (т.е. изменение порядка следования) элементов никак не соотносятся. скорее тут надо рассмотреть формирование самого массива изначально. |
Часовой пояс GMT +4, время: 18:25. |
|
« Предыдущая тема | Следующая тема » |
|
|