Я уже писал о генерации случайных чисел в ActionScript и сегодня продолжу эту тему. Итак, как мы помним, в ActionScript 3.0 имеется встроенный генератор случайных чисел Math.random(), который возвращает случайное значение в диапазоне от 0 до 1. Но на практике часто требуется случайное значение (и не только числовое!), которое имеет совсем другой интервал возможных значений. И тогда приходится писать собственную функцию...
Но, частично, данный недостаток стандартного Math.random() можно исправить с помощью небольшого вспомогательного класса Rnd от Grant-а Skinner-а. Фактически, класс Rnd расширяет возможности стандартного генератора случайных чисел в ActionScript 3.0 и предоставляет новые возможности для удобного формирования случайных значений. Эти новые возможности и будут рассмотрены далее.
Первым делом, нам надо подключить сам класс к нашему проекту (класс прилагается к исходнику - смотри конец статьи)...
Код ActionScript 3.0:
import Rnd;
В классе Rnd есть метод random(), который полностью дублирует работу стандартного Math.random().
Код ActionScript 3.0:
/*
подключаем класс
*/
import Rnd;
/*
генерируем случайное число
*/
trace("Результат работы Rnd.random(): " + Rnd.random())
Метод float() класса Rnd возвращает число с плавающей точкой в заданном интервале значений. В качестве параметров данному методу передаются минимальное и максимальное значения или только максимальное значение (при этом за минимальное значение автоматически берётся ноль).
Код ActionScript 3.0:
/*
подключаем класс
*/
import Rnd;
/*
генерируем случайное число
*/
trace("Результат работы Rnd.float(10): " + Rnd.float(10))
trace("Результат работы Rnd.float(10,20): " + Rnd.float(10,20))
Если нам надо, чтобы возвращалось не случайное число, а случайное булево значение (true или false), то мы можем воспользоваться методом boolean().
Код ActionScript 3.0:
/*
подключаем класс
*/
import Rnd;
/*
генерируем случайное значение
*/
trace("Результат работы Rnd.boolean(): " + Rnd.boolean());
Мы также имеет возможность регулировать частоту выпадения булевых значений, передавая соответствующий параметр в метод boolean(). Например, если нам надо, чтобы true выпадало только в 10% случаев, то передаём в качестве параметра значение 0.1.
Код ActionScript 3.0:
/*
подключаем класс
*/
import Rnd;
/*
генерируем случайное значение
*/
trace("Результат работы Rnd.boolean(0.1): " + Rnd.boolean(0.1));
Метод sign() случайным образом возвращает одно из двух значений: или «1», или «-1». Частота выпадения одного из значений регулируется точно также, как и у метода boolean().
Код ActionScript 3.0:
/*
подключаем класс
*/
import Rnd;
/*
генерируем случайное значение
*/
trace("Результат работы Rnd.sign(): " + Rnd.sign())
trace("Результат работы Rnd.sign(0.9): " + Rnd.sign(0.9))
Следующий метод bit(), как можно догадаться из его названия, случайным образом возвращает одно из двух значений: или «0», или «1». Частота выпадения тоже является регулируемой.
Код ActionScript 3.0:
/*
подключаем класс
*/
import Rnd;
/*
генерируем случайное значение
*/
trace("Результат работы Rnd.bit(): " + Rnd.bit())
trace("Результат работы Rnd.bit(0.1): " + Rnd.bit(0.1))
И, наконец, последний метод класса Rnd - это метод integer(), который возвращает случайное ЦЕЛОЕ число в заданном интервале. В качестве параметра ему надо передать минимальное и максимальное значение или только максимальное значение (при это за минимально допустимое значение будет взято «0»).
Код ActionScript 3.0:
/*
подключаем класс
*/
import Rnd;
/*
генерируем случайное значение
*/
trace("Результат работы Rnd.integer(10): " + Rnd.integer(10))
trace("Результат работы Rnd.integer(10,90): " + Rnd.integer(10,90))
Исходник под Adobe Flash CS5.5 и класс Rnd скачиваем здесь.