![]() |
Мой рандом, у кого есть лучше?
Нужно, чтобы у всех игроков по начальному случайному числу генерировалась та же последовательность псевдослуч. чисел с равномерным распределением. Т.к. в разных версиях флэш плееров функция Math.random может иметь разный алгоритм, то я нашёл какой-то древний алгоритм и сделал такую функцию. Начинается с трёх заданных случайных чисел r0, r1 и r2 (у меня используется младшие 31 бит). При обращении к ф-ции делается
temp=((r0+r1) rol 5) xor r2; (циклич. сдвиг влево на 5 бит и ^ с r2) r2=r1; r1=r0; r0=temp; и выдаётся r0; Код AS1/AS2:
|
Чем вас Math.random() не устраивает? В том смысле, объясните такую задачу, при которой его лучше не применять, а пользоваться вашим способом?
|
У меня же вначале написана причина.
Напр., сервер даёт клиентам случайное число, по которому у всех клиентов должна генерироваться та же самая последовательность чисел, чтобы данные для игры у всех были одинаковые. А Math.random по начальному числу может и не дать одинаковых последовательностей, т.к. в разных версиях флэш плееров может работать по-разному. |
Скорее всего Math.random имеет одну и ту же реализацию. Проблема в том, что для Math.random не задается seed, т.е. начальное число, от которого будет плясать генерация.
|
|
| Часовой пояс GMT +4, время: 18:26. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.