Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - asdada2

Pages: [1]
1
Привет!
Во тут есть два готовых решения, со строкой и с массивом:
http://crapware.aidf.org/forum/index.php?topic=1965.msg11825

Я не математик, по этому вот вариант, который мне показался проще.))
И на большом диапазоне цифр, он работает намного быстрее.
Code: (clickermann) [Select]
LOGCLEAR

FOR($n = 0, $n <= 50) // собираем входной массив из цифр - от 0 до 50
   ARRPUSH($arr, $n)
END_CYC

FOR($i = ARRSIZE($arr) - 1, $i > -1, -1)
   $n = RND(0,$i)
   LOGWRITE ($arr[$n]) // рандомная цифра в лог
   $arr[$n] = $arr[$i]
   $del = ARRPOP($arr)
END_CYC

HALT

Супер! Спасибо Вам!

2
Здравствуйте!
Вопрос к математикам:
Как сделать компактный генератор случайных неповторяющихся чисел? Эта порнуха, что изображена ниже -  работает, но занимает много пространства + для каждого доп. числа нужно добавлять 5 строчек кода. Как можно преобразовать это в один цикл "for"?


Code: (clickermann) [Select]

                               $C1 = 1
               $Work[$C1] = RND(1,5)

INC($C1)
$Work[$C1] = RND(1,5)
WHILE($Work[$C1] = $Work[$C1-1])
$Work[$C1] = RND(1,5)
END_CYC

INC($C1)
$Work[$C1] = RND(1,5)
WHILE($Work[$C1] = $Work[$C1-1] | $Work[$C1] = $Work[$C1-2])
$Work[$C1] = RND(1,5)
END_CYC

INC($C1)
$Work[$C1] = RND(1,5)
WHILE($Work[$C1] = $Work[$C1-1] | $Work[$C1] = $Work[$C1-2] | $Work[$C1] = $Work[$C1-3])
$Work[$C1] = RND(1,5)
END_CYC

INC($C1)
$Work[$C1] = RND(1,5)
WHILE($Work[$C1] = $Work[$C1-1] | $Work[$C1] = $Work[$C1-2] | $Work[$C1] = $Work[$C1-3] | $Work[$C1] = $Work[$C1-4])
$Work[$C1] = RND(1,5)
END_CYC

PRINT($Work[1])
PRINT($Work[2])
PRINT($Work[3])
PRINT($Work[4])
PRINT($Work[5])
PRINT(______)

Pages: [1]