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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 07.01.2015, 00:08
Godwarlock вне форума Посмотреть профиль Отправить личное сообщение для Godwarlock Найти все сообщения от Godwarlock
  № 1  
Ответить с цитированием
Godwarlock

Регистрация: Jan 2012
Сообщений: 836
По умолчанию Вопрос про проценты

Всем привет. Столкнулся с такой проблемой, хотя скорее это будет вопрос. Мы имеем например целое число 500 , другое значение зависимое от этого числа будет равно 30%. То есть максимальное значение 500 и максимальный процент другого значения 30. Каким образом, мне в коде выразить процентный шанс, например активации какого-либо события. Через mathrandom? Подскажите какие вообще варианты могут быть

Старый 07.01.2015, 00:39
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 2  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Ничего не понял. Может пример приведете?
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Старый 07.01.2015, 01:13
Godwarlock вне форума Посмотреть профиль Отправить личное сообщение для Godwarlock Найти все сообщения от Godwarlock
  № 3  
Ответить с цитированием
Godwarlock

Регистрация: Jan 2012
Сообщений: 836
Есть к примеру переменные:
Код AS3:
agility = 500; // Ловкость равна 500
dodge = 30; //Переменная dodge, её значение зависит от agility, только в процентном соотношении. В нашем случае agility имеет максимально значение(выше не поднимается), поэтому и переменная dodge имеет свои постоянные 30 процентов.
Теперь, к примеру, есть объект. Не буду мудрить, пусть это будет человек. Он имеет такие характеристики, как agility и dodge. В этого человека летит пуля, попадание её в человека, зависит от значения переменной dodge. Как мне просчитать вероятность попадания пули, исходя из процентного соотношения? 70% того, что пуля попадет в человека и 30%, что нет. То есть запускается ф-ция, там исходя из значения dodge генерируется вероятность шанса попадания пули в человека. Вот каким образом, реализовать эту самую генерацию? И что если например dodge не обязательно будет равен 30%, он может быть равен и 27,5 и 8,3 к примеру. Исходя из этих значения, будет просчитываться вероятность)

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

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,922
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Я, конечно, может, чего не понял, но
Math.random() - 0.3(процентное соотношение) .
Если Math.random() -(минус) 0.3 меньше или равно нулю - то рандом попал в промежуток тридцати процентов.
Итого

Код AS3:
var agility:int = 500;
var dodge:Number = 0.3;
 
var result:Boolean = Math.random() - dodge <= 0;
Где у вас dodge зависит от agility я так и не понял.

Кхм... Взглянул на получившееся неравенство и...
Подумал об упрощении.

Код AS3:
var agility:int = 500;
var dodge:Number = 0.3;
 
// Прибавим dodge к обеим частям неравенства, и в итоге получим
 
var result:Boolean = Math.random() <= dodge;
Теперь должно выглядеть ясней, а то я намудрил ^^

Думаю, если вам понадобится перевести проценты в десятичную дробь, вы сможете сделать это без моей помощи))
__________________
There is no thing in this world that is not simple.


Последний раз редактировалось ZackMercury; 07.01.2015 в 01:38.
Старый 07.01.2015, 01:45
illuzor вне форума Посмотреть профиль Отправить личное сообщение для illuzor Найти все сообщения от illuzor
  № 5  
Ответить с цитированием
illuzor
 
Аватар для illuzor

Регистрация: Dec 2010
Адрес: Ярославль
Сообщений: 1,255
Всё гораздо проще.

Код AS3:
if(Math.random() <=0.3){
  // промахнулся
} else {
  // попал
}

Старый 07.01.2015, 01:47
Godwarlock вне форума Посмотреть профиль Отправить личное сообщение для Godwarlock Найти все сообщения от Godwarlock
  № 6  
Ответить с цитированием
Godwarlock

Регистрация: Jan 2012
Сообщений: 836
А если процент, будет составлять 1,8? Как тогда? так?

Код AS3:
if(Math.random() <=0.018){
  // промахнулся
} else {
  // попал
}

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

Регистрация: Dec 2010
Адрес: Ярославль
Сообщений: 1,255
Godwarlock, да

Старый 07.01.2015, 02:03
Godwarlock вне форума Посмотреть профиль Отправить личное сообщение для Godwarlock Найти все сообщения от Godwarlock
  № 8  
Ответить с цитированием
Godwarlock

Регистрация: Jan 2012
Сообщений: 836
Спасибо всем за ответы)

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

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
А где 500?
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

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

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,922
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Цитата:
Сообщение от GBee Посмотреть сообщение
А где 500?
Сдаётся мне, он хотел сделать так, чтобы dodge 30% были пропорциональны 500 в agility.

Код AS3:
var agility:int = 500;
var dodge:Number = agility/500 * 0.3;
В опущенном виде

Код AS3:
if(Math.random() <= agility/500 * 0.3){
  // промахнулся
} else {
  // попал
}
Но всё-таки, я предполагаю, что этот код будет выполняться с определённым интервалом, поэтому пусть результат исчисления хранится в переменной dodge, заранее просчитанный.

Код AS3:
var agility:int = 500;
var dodge:Number = agility/500 * 0.3;
 
if(Math.random() <= dodge){
  // промахнулся
} else {
  // попал
}
P.S. Обожаю несложные математические задачки
__________________
There is no thing in this world that is not simple.

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

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

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


 


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


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