|
|
|||||
Регистрация: Apr 2010
Сообщений: 67
|
Случайная выборка из XMLList
Здравствуйте,
Из XMLList, к примеру со ста элементами, необходимо выбрать 10 случайных и уникальных (не повторяющихся) элементов. Как такое реализовать? Пока в голову лезут трехэтажные алгоритмы сомнительной пользы... |
|
|||||
Modus ponens
|
private function randomTake():void { var list:XMLList = <> <foo attribute="0"/> <foo attribute="1"/> <foo attribute="2"/> <foo attribute="3"/> <foo attribute="4"/> <foo attribute="5"/> <foo attribute="6"/> <foo attribute="7"/> <foo attribute="8"/> <foo attribute="9"/> </>; var result:XMLList = list.copy(); while (result.length() > 5) { delete result[Math.random() * result.length() >> 0]; } trace(result); }
__________________
Hell is the possibility of sanity |
|
|||||
Регистрация: Apr 2010
Сообщений: 67
|
Спасибо, wvxvw! Работает! Что-то подобное я и имел ввиду, сам бы до такого не додумался
|
|
|||||
Регистрация: Jun 2006
Сообщений: 400
|
Нафига их мешать, если и так выдает в случайном порядке?
|
|
|||||
Modus ponens
|
Про порядок никто не говорил
private function test():void { var list:XMLList = <> <foo attribute="0"/> <foo attribute="1"/> <foo attribute="2"/> <foo attribute="3"/> <foo attribute="4"/> <foo attribute="5"/> <foo attribute="6"/> <foo attribute="7"/> <foo attribute="8"/> <foo attribute="9"/> </>; var child:int; var result:XMLList = new XMLList(); while (result.length() < 5) { child = Math.random() * list.length(); result += list[child]; delete list[child]; } trace(result); }
__________________
Hell is the possibility of sanity |
|
|||||
Регистрация: Jun 2006
Сообщений: 400
|
Тьфу) присмотрелся. первый вариант вообще на шутку похож)
|
|
|||||
Можно перемешать элементы массива вот так:
|
Часовой пояс GMT +4, время: 12:39. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|