Ликбез про генератор случайных чисел - Math.random() в Adobe Flash
Очень часто в программе Adobe Flash требуется создать какой-нибудь случайный (хаотический) эффект. Основным средство для создания таких вот случайных (хаотических) эффектов в actionscript является генератор случайных чисел – Math.random(). В этой статье я подробно расскажу вам, что это такое и с чем его едят…
Начнем с простого и плавно будем наращивать сложность.
1
Итак, допустим мы хотим присвоить некой переменной X некое случайное число в пределах от 0 до 1 (0;1).
Для этого в Adobe Flash откроем панель Действий (Action) и введем:
X = Math.random(); trace(X);
При выполнении этого простого action скрипта, метод Math.Random() сгенерирует нам случайное число в пределах от 0 до 1 (0;1), присвоит его переменной X и затем выведет переменную X в окне вывода.
ВАЖНОЕ ПРИМЕЧАНИЕ!
Math.Random() сгенерирует нам случайное число в пределах от 0 до 1 (0;1). Причем чистого 0(нуля) и чистой 1(единицы) никогда не получиться! С течением времени случайные числа будут все ближе и ближе к 0(нулю) и 1(единице), но никогда не будут равны им. Чтобы убедиться в этом воочию смотрите динамическую flash модель!!!
2
Но что если нам нужно расширить область генерации случайных чисел?
Допустим, нам нужны два случайных числа от 0 до 100 (0;100) и от -100 до 0 (-100;0).
Что бы сгенерировать их снова воспользуемся методом Math.random только с некоторыми доработками.
Для этого откроем панель Действий(Action) и введем:
X = Math.random()*100; trace(X); Y = Math.random()*(-100); trace(Y);
Этот action скрипт сгенерирует нам два числа: одно будет в диапазоне - (0;100); другое соответственно - (-100;0)
Таким образом, умножая, мы расширяем границы генерации до нужного нам значения. 3
Но что если нам нужно захватить и отрицательные числа и положительные?
Например, нам нужно сгенерировать случайное число в пределах от -100 до 100 (-100;100).
Для этого откроем панель Действий(Action) и введем:
X = Math.random()*200 – 100; trace(X);
В данном случае сначала Math.random()*200 генерируем случайное число от 0 до 200 (0;200), а затем, отнимая 100, мы сдвигаем полученные весь диапазон влево на 100, тем самым получая диапазон не от 0 до 200 (0;200), а от -100 до 100 (-100;100).
Заметьте что (-100;100) - это симметричный относительно нуля диапазон. 4
Теперь давайте разберем важный и практический вопрос, как сгенерировать случайное число в заданном (не симметричных относительно нуля!) диапазоне.
Например, нам нужно сгенерировать случайное число исключительно в диапазоне от -207 до 1004 (-207;1004).
Для этого:
X = Math.random()*(207+1004) – 207; trace(X);
Заделаем эту формулу универсальной:
X = Math.random()*(|a|+b) –| a|, где a – левая граница по модулю, b – правая граница
Запомните эту формулу! Честно, она вам еще пригодиться не один раз! К тому же она очень простая. 5
Ну и последнее…
Как сделать так, чтобы генератор случайных чисел Math.random() генерировал целые числа, например, от 0 до 7?
Все просто, достаточно в панели Действий(Action) написать:
X = Math.random(8) trace(X);
В этом случае Math.random сгенерирует целое число из значений 0, 1, 2, 3, 4, 5, 6, 7. Заключение
Ну, вот и все о генераторе случайных чисел Math.random Штука эта очень полезная и знать о ней, а тем более применять должен каждый начинающий флешер!
Для вас писал и старался Виталий К. под музыку Red Hot Chili Peppers Flash примеры
Вот вам маленький и креативный пример по использованию генератора случайных чисел в Adobe Flash - "Креативное Рисование"
Скачать
Скачать pdf версию обучабщей статьи: random_gen.rar [496.51 Kb] (cкачиваний: 132)
Скачать fla исходник примера: creative_random_drawing.rar [4.42 Kb] (cкачиваний: 127)
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо зайти на сайт под своим именем.
X = Math.random(7); //даст дробное число (0;1) trace(X);
Если же надо присвоить переменной X значение от 0 до 7(0;1;2;3;4;5;6;7), надо писать: X = random(8); //ну не как ни 7 trace(X);
по моему даст число в диапазоне [0;8) P.S. [ - Включительно) - Исключительно Создаётся впечатление что автор не знаком с средой Flash, тем более с ActionScript 2 Если не прав то поясните.....
Stribog, да все верно, спасибо что поправили, в статье исправил
Толи я что то не понимаю, толи у нас разные среды программирования...
Тем не менее X = Math.random(8); trace(X);
Даст дробное число (0;1). После Math.random(8) должна быть точка с запятой ;
Если надо число [0;7)
Надо писать: X = random(8); trace(X);
Без Math. С приставкой Math. в любом случае - Даст дробное число (0;1)
Если уж на то пошло то статью надо всю переписать... Ну просто я не представляю, что бы было если бы я начал своё обучение с этой статьи, да я бы ни фига не понял... Автор ты хоть сам то попробуй то что ты написал на практике...
Например:
Цитата: vitkuz
X = Math.random()*(207+1004) – 207; trace(X);
После этой команды Flash выдает ошибку , она не понимает её я уже молчу про остальное.... Это просто ужасно...
P.S. Я работаю в среде Macromedia Flash Professional 8 Возможно в разных средах разработки есть небольшие отличия (хотя язык то один dontknow )... поправьте если не прав ...
Да! похоже я неправ. исходник .Fla у меня не открывается . Все таки есть отличия... Извиняюсь за свои, возможно тупые комментарии. Не думал что среды программирования сильно отличаются...
-------- Спустя некоторое время----- Да! похоже я неправ. исходник .Fla у меня не открывается . Все таки есть отличия... Извиняюсь за свои, возможно тупые комментарии. Не думал что среды программирования сильно отличаются...
ICQ: --
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии в данной новости.
Видео Журнал "Легко о Flash" - подписавшись на него вы будете один раз в месяц получать его выпуск на свой почтовый ящик, там вы найдете новые видео уроки по работе в программе Adobe Flash CS4.
политика антиспама
подпишитесь сейчас и получите доступ ко всем выпущенным журналам