![]() |
Очень интересно :)
То есть в avm2 вызов Math.random() будет один - но как то нелогично, что берет из правой части, наверное, логичней было бы брать с левой? 2udafff: точно, голова кипит :) |
Ну, это мое предположение, что переписали, а не факт. :)
Просто проверить легко, вместо рнд впихнуть в массив вызов функции, где рнд и будет формироваться, потом в трейс и на выход в return. В avm1 два трейса, в avm2 - один. |
Цитата:
Посмотри на дамп: - вызов Math.random() во втором случае только 1 раз. - даже если бы он вызывался 2 раза - какая разница какой из элементов массива инкрементить? Судя по всему почему-то, в какой-то ситуации значение из стека не присваевается обратно элементу в массиве. EDIT: Ой, сорри - был не прав, проморгал, действительно Math.random() вызывается 2 раза... :( Чет я проглядел |
А кто может на примере объяснить почему Math.floor()
Код AS1/AS2:
Код AS1/AS2:
Цитата:
Цитата:
|
AzagThoth, если вы пишете аналог random() с использованием Math.random(), то вам нужно знать, что random() возвращает целое число от 0 до N, не включая N.
|
Эти два варианта
Код AS1/AS2:
Ежели использовать для round множитель не длины, а номер индекса, то вас ждет разочарование - равномерного распределения не будет. Пример Код AS3:
Цитата:
А с round распределения идут в таком соотношение: 1/8, 1/4, 1/4, 1/4, 1/8. Почему? Да потому, что целое число X (0<X<4) будет получаться от не целых чисел X-0,5..X+0,5 (диапазон равен 1), а числа 0 и 4, от 0..0,5 и 3,5..4 (диапазон равен 0,5), поэтому вероятность для чисел 1,2,3 будет в два раза больше, чем для 0 и 4. |
Всё, понял. Большое спасибо! Очень наглядно.
|
| Часовой пояс GMT +4, время: 11:58. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.