Выбор случайных вариантов - тянем карты из колоды [1.0] |
Автор: Nex |
29.05.2011 20:05 |
Если требуется выбрать случайный вариант однократно, то используется оператор RAND. Но если стоит задача сделать последовательный выбор случайных вариантов из заранее сформированного массива значений, то одним только RAND не обойтись.При каждом последующем выборе нужно будет "помнить", какие значения были уже выбраны. Эта задача схожа с последовательным вытягиванием карт из колоды. Решение, оформленное в виде пользовательской функции: ! Запрашиваем длину массива _length = ARRSIZE('$random') ! Если вариантов уже нет, возвращаем 'ERROR' IF _length = 0: $RESULT = 'ERROR' EXIT END ! Выбираем из массива случайный элемент, соотв. длине массива _variant = RAND(0, _length-1) ! Запоминаем результат $RESULT = $random[_variant] ! Удаляем отработанный элемент KILLVAR '$random', _variant Тестовый пример использования: $random[0]='A' $random[1]='B' $random[2]='C' $random[3]='D' $random[4]='E' $random[5]='F' $random[6]='G' i = 1 :loop $rand = FUNC('Тянуть карту') 'Шаг №<<i>>. Значение: <<$rand>>' i = i + 1 IF i <= 7: JUMP 'loop' END |