![]() |
У меня тоже самое, только с блек-джеком и стюардессами. :3
|
wvxvw, меня смущает обилие числа "10". Сбивает с толку, где это длина вектора, а где вес(?).
Не мог бы ты заменить это на прямое обращение к свойству или на человекопонятную константу? :) |
Цитата:
Код AS3:
|
Все-таки i.o. победил в моей голове. Но спасибо за ликбез.
|
Еще, кстати, вот так можно:
Код AS3:
|
ShadowsInRain:
Ага, я просто не видел ответов, когда писал. i.o.: 10 - там всегда длина массива, и не важно какого, т.как они должны быть одной длины (если они не будут одинаковыми, то работать не будет). crazy: Код:
var upperIndex:uint = weights.length - 1;mikhailk: Если уж оптимизировать / нормализировать, то есть смысл начинать искать подходящий вариант не с начала, а пытаться предугадать его позицию, но это может сработать только если распределение более-менее однородное. Другой вариант, при изменении веса - записывать общую суму (это будет дешевле, чем каждый раз ее пересчитывать). Опять же, на практике все будет зависеть от того, как часто и какая именно часть алгоритма используется, и какие реальные значения могут быть у весов. |
Цитата:
Относительно попыток предугадать позицию - не уверен. Хотя, если уже совсем лезть в бутылку, можно двоичное дерево построить. :) |
Код AS3:
делаем рандом перебираем всё в цикле и плюсуем в переменную пока переменная не достигнет рандома. то что будет достигнуто рандомом и будет индексом в массиве чисел по шансу |
А еще, конечно, не мозговыносящий алгоритм, но уже интереснее... :p
Код AS3:
ЗЫ. Не обязательно двоичное дерево, но тоже вариант. Можно предугадать позицию, если, например, мы знаем, что на каждый "шанс" у нас приходится по, скажем, 2 деления, то, тогда, если рандом выдал 8, то это значит, что это должно быть где-то в районе 4-го элемента. Ну или хотябы просто считать не с начала, а с середины, в таком случае наш самый худший случай будет в 2 раза меньше, чем если мы всегда будем считать от начала. EDIT: Да, а еще можно было бы находить предполагаемый участок, куда упал рандомальный выбор по типу как в quicksort, т.е. делить оставшийся диапазон на 2 все время... хм... ну, вечером наверн сделаю :) |
Цитата:
|
| Часовой пояс GMT +4, время: 23:14. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.