![]() |
|
||||||||||
|
|||||
|
Регистрация: Apr 2010
Сообщений: 67
|
Здравствуйте,
Из 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, время: 22:46. |
|
|
« Предыдущая тема | Следующая тема » |
|
|