За место LOGWRITE ("Число 1")..., понятное дело, нужно написать вызов твоих подпрограмм. Запись в лог написано просто для тестирования.
IF(ARRSIZE($ARR) = 0)
LOGWRITE ("Новый цикл")
$count1 = 1 // начальное число
$count2 = 20 // конечное число
WHILE($count1 < $count2+1)
ARRPUSH($ARR,$count1)
INC($count1,1)
END_CYC
END_IF
$ARR_SIZE = ARRSIZE($ARR)
FOR ($i=0, $i<$ARR_SIZE*2)
$n1 = RND(0,$ARR_SIZE-1)
$n2 = RND(0,$ARR_SIZE-1)
$R = $ARR[$n1]
$ARR[$n1] = $ARR[$n2]
$ARR[$n2] = $R
END_CYC
$r = ARRPOP($ARR)
SWITCH($r)
CASE(1)
LOGWRITE ("Число 1")
CASE(2)
LOGWRITE ("Число 2")
CASE(3)
LOGWRITE ("Число 3")
CASE(4)
LOGWRITE ("Число 4")
CASE(5)
LOGWRITE ("Число 5")
CASE(6)
LOGWRITE ("Число 6")
CASE(7)
LOGWRITE ("Число 7")
CASE(8)
LOGWRITE ("Число 8")
CASE(9)
LOGWRITE ("Число 9")
CASE(10)
LOGWRITE ("Число 10")
CASE(11)
LOGWRITE ("Число 11")
CASE(12)
LOGWRITE ("Число 12")
CASE(13)
LOGWRITE ("Число 13")
CASE(14)
LOGWRITE ("Число 14")
CASE(15)
LOGWRITE ("Число 15")
CASE(16)
LOGWRITE ("Число 16")
CASE(17)
LOGWRITE ("Число 17")
CASE(18)
LOGWRITE ("Число 18")
CASE(19)
LOGWRITE ("Число 19")
CASE(20)
LOGWRITE ("Число 20")
DEFAULT
END_SWITCH