Nurkz Опубликовано 22 октября, 2013 Жалоба Поделиться Опубликовано 22 октября, 2013 (изменено) Есть кусок кода.setarray $items[0],909,1202,938,512,713,914,949,511,705,507,515,622;set $items_n, rand(2,n);for(set .@i, 1; .@i <= $items_n; set .@i, .@i +1) {setd "$item_" + .@i, $items[rand(getarraysize($items))];}Получаются переменные $item_1, $item_2, ..., $item_nСо значениями из массива $itemsВопрос.1) Как сделать что-бы значения не повторялись.Ибо рандом такой рандом что иногда может быть и так:$item_1 = 909$item_2 = 909$item_n = 909Заранее спасибо. Изменено 22 октября, 2013 пользователем friimq Ссылка на комментарий Поделиться на другие сайты Поделиться
Sanasol Опубликовано 22 октября, 2013 Жалоба Поделиться Опубликовано 22 октября, 2013 рандом на то и рандом чтобы рандомно было.в таком случае слеай просто по списку итемы из массива, без рандома Ссылка на комментарий Поделиться на другие сайты Поделиться
Jarek Опубликовано 22 октября, 2013 Жалоба Поделиться Опубликовано 22 октября, 2013 Как вариант - временная копия массива с последующим удалением выпавшего в рандоме элемента. Ссылка на комментарий Поделиться на другие сайты Поделиться
Break Опубликовано 22 октября, 2013 Жалоба Поделиться Опубликовано 22 октября, 2013 (изменено) А что разве банальная проверка на сравнение не прокатит? if($item_1[$items_n]==$item_2[$items_n]) отправляем в начало а ля goto, и т д Изменено 22 октября, 2013 пользователем Break Ссылка на комментарий Поделиться на другие сайты Поделиться
Nurkz Опубликовано 22 октября, 2013 Автор Жалоба Поделиться Опубликовано 22 октября, 2013 (изменено) О, всё, всем спасибо, разобрался сам.for(set .@i, 1; .@i <= $items_n; set .@i, .@i +1) {loop: set .@item, $items[rand(getarraysize($items))]; if(.@i > 1) for(set .@j, 1; .@j <= .@i; set .@j, .@j+1) jump_zero(getd("$item_" +.@j)!=.@item), loop;}setd "$item_" + .@i, .@item;} Изменено 10 апреля, 2015 пользователем Nurkz 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения