Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 26.01.2017, 13:26
delphic вне форума Посмотреть профиль Отправить личное сообщение для delphic Найти все сообщения от delphic
  № 11  
Ответить с цитированием
delphic

Регистрация: Apr 2014
Сообщений: 215
понятно объяснили, а насчет числа что скажете?

рандом из 8 например, нужно писать диапазон от 1 до 8,или можно указать просто 8 и генератор сам выбирает

Старый 26.01.2017, 14:06
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 12  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
delphic, вы вообще не поняли то, как работает предложенное выше?
Math.random() возвращает случайное число от 0 до 1(например, 0.7584125, или 0.941255124, или 0.30000)
Это значит, что, (если у вас присутствует школьное образование) если умножить это число на любое другое число - рандом будет от 0 до этого числа.
Например:
Код AS3:
Math.random()*arr.length;
- рандом от 0 до длины массива.
В данном случае, если округлять, вместо отбрасывания целой части:
Код AS3:
Math.round(Math.random()*arr.length);
Достаточно немного подумать, чтобы понять, что максимальное число, получаемое в результате этой операции будет равным длине массива(а последний элемент массива всегда имеет индекс на единицу меньше длины), значит это нам не подходит.
Так как никогда не выпадает единица, никогда не выпадет ровно число, на которое вы умножаете Math.random, оно будет всегда чуточку меньше. Поэтому, мы можем просто отбросить дробную часть с помощью int().
Код AS3:
int(Math.random()*arr.length);
- вернётся псевдорандомный индекс массива

Цитата:
диапазон от 1 до 8
Берём минимальное, максимальное значение и разницу между ними.
нам нужно, чтобы рандом был между минимальным и максимальным, а значит мы
вычитаем из максимального минимальное, и получаем число, на которое нам нужно умножать Math.random().
Затем думаем, как нам получить рандомное число между минимальным и максимальным.
Вуаля!
Код AS3:
var min:int = 1;
var max:int = 8;
var result:int = min + int(Math.random()*(max - min));
Вывод: в школе надо учиться.
__________________
There is no thing in this world that is not simple.

Старый 26.01.2017, 15:18
delphic вне форума Посмотреть профиль Отправить личное сообщение для delphic Найти все сообщения от delphic
  № 13  
Ответить с цитированием
delphic

Регистрация: Apr 2014
Сообщений: 215
я лишь спрашивал - рандом из 8 например, нужно писать диапазон от 1 до 8,или можно указать просто 8 и генератор сам выбирает.
при чем тут школа
можно было написать
Код AS3:
trace(Math.random())
и узнать что он возвращает, я не знал как именно он отрабатывает, оказывается да от 0 и до 1 и умножив на число получаем диапазон
я не понимал как именно генерируется,я думал что Math.random берет число и из него как то вычисляет,оказывается проще,всем спасибо

Старый 26.01.2017, 15:25
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 14  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Math.random() использует текущее время в миллисекундах в качестве Seed для псевдорандомного генератора. Он берёт это число, и из него вычисляет, но вам это знать не обязательно.
Всё, что вам нужно знать - это то, что Math.random() возвращает вещественное число [0; 1). Остальное легко написать вручную, зная элементарную школьную математику.
__________________
There is no thing in this world that is not simple.

Старый 27.01.2017, 05:52
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 15  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
это вызов глобальной функции которое преобразует
Это не вызов глобальной функции, а конвертация типа. Число преобразуется из Number в int, при этом дробная часть отсекается. Этот способ далеко не всегда хорош, так как разрядность числа int, гораздо меньше, чем Number. Например new Date().time возвращает Number, хоть и без дробной части, и сконвертировать его в int не получится без сокращения
С округлением все просто
floor - дословно "пол", то есть в меньшую
ceil - (от англ. ceiling) дословно "потолок", то есть в сторону большего
round - округление по законам математики
__________________
Ко мне можно и нужно обращаться на ты)

Старый 29.01.2017, 22:41
Wormhole вне форума Посмотреть профиль Отправить личное сообщение для Wormhole Найти все сообщения от Wormhole
  № 16  
Ответить с цитированием
Wormhole
 
Аватар для Wormhole

Регистрация: Jun 2014
Адрес: Санкт-Петербург
Сообщений: 185
Цитата:
Сообщение от caseyryan Посмотреть сообщение
Это не вызов глобальной функции, а конвертация типа.
Лично я всегда думал, что int(obj) - это сокращение от new int(obj) и, по сути, возвращает новосозданный инт, соответствующий переданному объекту
__________________
В прошлом - AS3 программист, в данный момент пишу на Haxe

Старый 30.01.2017, 06:19
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 17  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Сообщение от Wormhole Посмотреть сообщение
Лично я всегда думал, что int(obj) - это сокращение от new int(obj) и, по сути, возвращает новосозданный инт, соответствующий переданному объекту
Нет. Новый объект получается только с использованием директивы new и никак иначе
__________________
Ко мне можно и нужно обращаться на ты)

Старый 30.01.2017, 22:47
Nooob вне форума Посмотреть профиль Отправить личное сообщение для Nooob Найти все сообщения от Nooob
  № 18  
Ответить с цитированием
Nooob
 
Аватар для Nooob

Регистрация: Mar 2007
Сообщений: 319
Цитата:
Сообщение от caseyryan Посмотреть сообщение
Нет. Новый объект получается только с использованием директивы new и никак иначе
не только
Код AS3:
var obj:Object = {};
var arr:Array = [];
var xml:XML = <xml />;
var rgx:RegExp = /a(.*?)b/g;
var str:String = "";
Конвертация тоже создает новый объект.

Код AS3:
var a:int = 1;
var b:int = new int(1.1);
//эквивалентно
var c:int = int(1.1);
тоже создание объекта, просто этот объект другого атомарного типа, по другому конструируется и хранится


Последний раз редактировалось Nooob; 30.01.2017 в 23:05.
Старый 03.02.2017, 13:55
Wormhole вне форума Посмотреть профиль Отправить личное сообщение для Wormhole Найти все сообщения от Wormhole
  № 19  
Ответить с цитированием
Wormhole
 
Аватар для Wormhole

Регистрация: Jun 2014
Адрес: Санкт-Петербург
Сообщений: 185
Цитата:
Сообщение от Nooob Посмотреть сообщение
объект другого атомарного типа, по другому конструируется и хранится
Стало интересно узнать про это подробнее. Что понимается по атомарным типом и в чем отличия типа после каста от int'а, который создается с помощью new
__________________
В прошлом - AS3 программист, в данный момент пишу на Haxe

Создать новую тему Ответ Часовой пояс GMT +4, время: 09:04.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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