Для генерирования случайных чисел в ActionScript 2.0 есть два специальных метода:
1.) метод random()
Метод random() возвращает случайные числа в диапазоне от 0 до числа, которое на единицу меньше, чем указанное в качестве параметра у данного метода.
Код ActionScript 2.0:
trace(random(12))
В приведённом выше примере программа будет генерировать случайные числа от 0 до 11 (но не 12).
В результате нескольких запусков приведённого выше кода в панель Output были выведены следующие случайные числа:
5
3
8
10
1
11
1
7
1
На данный момент метод random() считается устаревшим и его использование не рекомендуется.
2.) метод random() класса Math
Math.random() возвращает случайные числа в диапазоне от 0 до 1.
Код ActionScript 2.0:
trace(Math.random())
После нескольких запусков программы в Output (специальная панель программы, в которой выводятся результаты трассировки) у меня оказались следующие числа:
0.492935118731111
0.772722862660885
0.41508986055851
0.97931618290022
0.797055774834007
0.167450917419046
0.400475445203483
Чтобы получить случайное число в интервале от 0 до заданного числа, достаточно лишь умножить результат работы данной функции на заданное число. К примеру, для получения случайного числа x, которое удовлетворяло бы условию 0<x<10, достаточно следующего кода:
trace(Math.random()*10)
Чтобы получить случайное число не в интервале от 0 до заданного числа, а в диапазоне от одного заданного числа до другого заданного числа, можно использовать конструкцию следующего вида:
(максимальное_значение - минимальное_значение) * Math.random() + минимальное_значение;
Так, для получения случайного числа в диапазоне от 50 до 100 можно применить следующий код:
trace((100-50)*Math.random()+50)
Именно метод Math.random() рекомендован к использованию вместо устаревшего random().
На практике, как правило, требуются целые случайные числа. Поэтому Math.random() часто используется в сочетании с методами округления. Для округления чисел в ActionScript применяется три специальных метода:
I.) Math.round() - округление числа по математическим правилам
Если дробная часть числа меньше 0.5 , то число будет округлено до ближайшего наименьшего целого числа, а если число равно или больше 0.5 , то оно будет округлено до ближайшего наибольшего целого числа.
Код ActionScript 2.0:
trace(Math.round(0.772722862660885))
Данный код вернёт "1".
II.) Math.floor() - округление до ближайшего меньшего целого числа
Код ActionScript 2.0:
trace(Math.floor(0.772722862660885))
Данный код вернёт "0".
III.) Math.ceil() - округление до ближайшего большего целого числа
Код ActionScript 2.0:
trace(Math.ceil(0.167450917419046))
Данный код вернёт "1".
Используя метод Math.random() в сочетании с одним из методов округления, можно получить случайное число в заданном диапазоне. Так, например, для вывода случайных чисел в интервале от 0 до 10 (включительно) можно использовать следующий код:
trace(Math.round(Math.random()*10))
Учтите, что использование разных методов округления может влиять на возвращаемый результат. Так, следующий код вернёт уже случайные числа только от 0 до 9 (включительно):
trace(Math.floor(Math.random()*10))
Для получения случайного числа с заданным количеством символов после запятой, можно воспользоваться кодом примерно следующего вида:
function trim(num, dec) {
var rez = num;
if (dec>=0) {
var temp = Math.pow(10, dec);
rez = Math.round(num*temp)/temp;
}
return rez;
}
trace(trim(Math.random()*100, 2));
Данный код вернёт случайное число в диапазоне от 0 до 100 с двумя знаками после запятой.
В ActionScript 3.0 для получения случайных чисел тоже используется метод Math.random(), который также возвращает случайное число с плавающей запятой в диапазоне от 0 до 1.
Код ActionScript 3.0:
trace(Math.random())
Описанные ранее приёмы для работы со случайными числами в ActionScript 2.0, будут работать и в ActionScript 3.0 (методы округления в этих языках тоже идентичны).
Примечания
[!] В ActionScript (вне зависимости от версии языка) целая часть числа отделяется от дробной не запятой, а точкой. Например:
0,5 - неправильно
0.5 - правильно
[!] Встроенный генератор случайных чисел (правильнее, псевдослучайных) далеко не идеален и разработчики иногда прибегают к написанию собственных генераторов случайных значений (примеры можно без особого труда найти в сети).