А такую тему и поднимали и тогда через строки и решали, только попроще... или посложней, в 10-ричном формате.
Предложенный тобой вариант намного изящней и компактней.
Вот вариант не такой изящный, конечно, но универсальней. А вдруг числа нужны не до 18, а до 50... или до 170?
Заманаемся $str = 0x010x020x..... подготавливать
Пусть сам заполняет
, правда для простоты в этом случае отойдём от 16-ричной системы.
LOGCLEAR
$count1 = 1 // начальное число
$count2 = 18 // конечное число
$str = ""
FOR($count = $count1-1, $count < $count2)
$str = STRCONCAT($str, ":")
FOR($i=0, $i < (3 - STRLEN($count+1)))
$str = STRCONCAT($str, "0")
END_CYC
$str = STRCONCAT($str, $count+1)
END_CYC
//LOGWRITE ($str)
FOR($i = $count2, $i > 0, -1)
$n = STRCUT($str, RND(1,$i) * 4 - 3, 4)
$str = STRREPLACE($str, $n, "")
LOGWRITE (INT(STRCUT($n, 2, 20)))
END_CYC
HALT