Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   как вытащить случайное значение массива (http://www.flasher.ru/forum/showthread.php?t=213824)

delphic 25.01.2017 21:59

как вытащить случайное значение массива
 
здравствуйте
например есть массив строк,ну пусть три,четыре значения

1 элемент а
2 б
3 в
4 г

теперь как можно сделать чтоб из этих элементов массива вытащить случайный

есть

Код AS3:

Math.round(Math.random())

но не пойму как соединить и в трейс вывести

и еще, если не затруднит покажите пример, допустим хочу что бы рандом был из 8 чисел
как это выглядит,т.е в диапазоне от 1 и до 8 трейсом выкидывало

не нужно очень усложненных махинаций, небольшой понятный пример

illuzor 25.01.2017 22:14

https://gist.github.com/illuzor/fdce...d90ec51b5d5c20

zackscript 25.01.2017 22:14

Код AS3:

var _nums:Array = ["a","b","c","d"];
trace(_nums[Math.round(Math.random()* _nums.length)])


Nooob 26.01.2017 00:26

zackscript, не round а floor

caseyryan 26.01.2017 06:14

или вообще
Код AS3:

var _nums:Array = ["a","b","c","d"];
trace(_nums[int(Math.random()* _nums.length)]);


delphic 26.01.2017 08:06

всем спасибо за ответы,но по ним есть вопросы

1) в чем различие между
Код AS3:

Math.round(Math.random()

и
Код AS3:

Math.floor(Math.random()

2)
Код AS3:

int(Math.random()* _nums.length)

что делает тут
Код AS3:

int

,превращат полученное в целое число?
3)если есть число 8, как из него вытащить рандом? т.е обязательно указывать диапазон или все таки можно просто указать цифру и из него генератор выберет какое то число

zackscript 26.01.2017 09:28

Цитата:

в чем различие между
round - округляет число в большую или меньшую сторону, например:
1.25 => 1;
1.79 => 2;
floor - всегда округляет до наименьшего значение числа, например:
1.25 => 1;
1.79 => 1;
Цитата:

что делает тут int ()
int () - это вызов глобальной функции которое преобразует (в вашем случае) из Number в тип int делая число целым например:
trace(int(1.23620078060775995)) => 1;

Zebestov 26.01.2017 10:25

zackscript, твой ответ неточен и неполон.
Исправление: Math.round(1.25) будет равен не 1, а 2.
Дополнение: Не помешает и пример с отрицательным значением. Так int(-1.234) будет равен -1. Это чтобы не казалось, что int() в самом общем случае дает тот же результат, что и Math.floor().

КорДум 26.01.2017 10:59

Цитата:

Исправление: Math.round(1.25) будет равен не 1, а 2.
Бестыч, ты чего? 1 будет, это же не ceil

Zebestov 26.01.2017 12:02

Кто-то не выпил свой утренний кофе или забыл школьную математику )
Цитата:

Если значение val равноудалено от двух ближайших целых чисел (когда в конце числа стоит «,5»), оно округляется в большую сторону до ближайшего целого числа.
Добавлено через 1 минуту
В итоге этот кто-то я ))) там же не 1.5 )) пошел пить кофе!


Часовой пояс GMT +4, время: 08:30.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.