Перейти к содержанию

нужна помощь


Рекомендуемые сообщения

Есть кусок кода.


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

Заранее спасибо.

Изменено пользователем friimq
Ссылка на комментарий
Поделиться на другие сайты

рандом на то и рандом чтобы рандомно было.

в таком случае слеай просто по списку итемы из массива, без рандома

Ссылка на комментарий
Поделиться на другие сайты

А что разве банальная проверка на сравнение не прокатит? :unsure:

if($item_1[$items_n]==$item_2[$items_n])

отправляем в начало а ля goto, и т д

Изменено пользователем Break
Ссылка на комментарий
Поделиться на другие сайты

О, всё, всем спасибо, разобрался сам.


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;}

Изменено пользователем Nurkz
  • Downvote 1
Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...
Яндекс.Метрика