![]() |
Генератор случайных чисел с вероятностью "не повторения"
Вечер добрый,
Необходим генератор случайнх чисел с вероятностью "неповторения". обьясню кратко: есть один клип, новая копия которого, каждые 50 кадров появляются случайно, либо слево от экрана и перемещается через весь экран направо, либо справо и перемещается налево. их y(высота) тоже случайно считается. высота moveclipа около 50 пикселов. при появлении они должны с большой вероятностью (но не точно) появляться в другом месте и не наезжать на предыдущих. но и слево внизу появился, потом справо наверху, потом опять противоположное, слево внизу не должно быть. ну вы поняли, случайно, с небольшой вероятностью к этому :D вот что получилось без вероятности: Код AS3:
и к слову, таймер реализован вот так. хороший ли это способ, или всетаки для подсчета кадров есть какой-то изобретенный "велосипед", а не просто увеличивающаяся переменная? Код AS3:
|
Записываете с помощью for(...) в массив числа, а потом размешиваете с помощью функции в моей библиотеке:
Код AS3:
Бери по одному числу (yourArray[0]), а потом его удаляй (yourArray.splice(0,1)). |
Цитата:
|
Цитата:
|
Вы взяли число из массива по индексу [0] (рандомное, массив же перемешан) и удалили его из этого массива. Это гарантирует, что это число уже "не попадется", следующее по тому же индексу [0] будет гарантированно другим. Когда массив закончится, создаете новый. На "стыках" между старым и новым есть ненулевая вероятность совпадения последнего числа из первого массива и первого числа из нового массива. Решается простой проверкой и выкидыванием числа из нового массива, если совпадение есть.
|
Код AS3:
Мне сложно себе представить инкремент обработчика события таймера. |
нет, вы меня просто не поняли :)
например мувклип появился наверху экрана. его y = 100. теперь он должен появиться еще раз, с большой вероятностью что он появится внизу с y = 700. если он появился посередине с y = 400, то вероятнсть что н появиться с обоих других концов равна, а то, что посередине мала. если он появился на высоте 1/4 высоты экрана, то соответственно программа вычисляет вероятность дальше. и разумеется числа не круглые, а случайные. а таймер работет отлично, просто такой способ меня почему-то смущает. |
| Часовой пояс GMT +4, время: 17:18. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.