![]() |
Работа с массивом. Рандомное число
Всем привет.Нужна Ваша помощь
к примеру у меня есть массив Код AS3:
делал так : Код AS3:
|
Рандомизируйте числа длины массива.
massiv1[randomIndex] - даст нужный результат. |
Код AS3:
|
Цитата:
Код AS3:
|
Цитата:
* (massiv1.length-1) на сколько я знаю свойство length подсчитывает количество элементов в массиве не пойму к чему здесь -1 :( задаю такие вопросы, так как в русле неделю, вот хочу с массивами конкретно разобраться Добавлено через 6 минут Код AS3:
Спасибо,Ваша запись понятна и работает |
Цитата:
|
на самом деле это не обязательно, достаточно такой записи
Код AS3:
Цитата:
|
Цитата:
И действительно реже: Код AS3:
|
Цитата:
|
Даже интересно стало.
Код AS3:
round 1197,2534,2518,2530,1221 int 2009,1973,2025,2020,1973 round 1204,2534,2478,2511,1273 int 2063,1915,1983,1976,2063 round 1215,2495,2445,2565,1280 |
Все дело в том, что в случае с round, выпадение крайних значений вероятно лишь в диапазоне длиной 0.5, в отличие от остальных значений. В случае же с int диапазон равен единице на всех значениях.
|
int как floor работает получается?
|
Ну в общем-то да. Т. е. тут неважно, int/floor.
|
Для положительных - как floor, для отрицательных как ceil. int округляет в сторону нуля, а не вверх или вниз
|
Ах, ну да, он просто обрезает дробную часть.
|
есть еще метод Math.floor(); - с ним все в порядке)
|
а выше не о нем говорили? )
int быстрее, и для положительных чисел предпочтительнее. Тут недавно кто-то даже измерениями занимался, и разница в скорости оказалась довольно существенной |
Цитата:
Код AS3:
|
объясните этот момент
насколько я понимаю int(Math.random() * _arr.length)с небольшой вероятностью ведь может выдать и сам _arr.length. Math.random() ведь генерит от 0 до 1 включительно? |
Math.random возвращает от 0,включительно до 1, не включая ёе, а int, обрезает дробную часть.
|
да, теперь все становится на свои места. никогда не смотрел хелп по таким элементарным вещам :)
Цитата:
|
Цитата:
Цитата:
|
Цитата:
... value == -11 - ахтунг! |
Цитата:
Например, int(-10.123) вернет -10, а Math.floor(-10.123) вернет -11. Поэтому чтобы использовать int() вместо Math.floor() нужно проверять знак числа и вычитать единицу из отрицательного. |
Код AS3:
|
Код AS3:
Добавлено через 50 секунд Код AS3:
|
Silicium, floor и int логически разные. Один занимается округлением, второй — конвертацией.
|
Цитата:
Цитата:
Код AS3:
|
У меня такие варианты:
Код AS3:
|
И в 99% случаев вся эта «скорость» нафиг не нужна. Посему нет никакого смысла заморачиваться и просто нужно использовать правильное в правильном месте.
|
| Часовой пояс GMT +4, время: 09:09. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.