имеется способность активная, при активации оной с вероятностью {INT/20}% должно произойти обнуление перезарядки всех способностей героя, процент я расчитал, потом 100 поделил на этот % и через Действие - рандомное число от 1 до {100/%} вроде всё работает но округляется сильно, можно ли с точностью до 1% какую то формулу придумать подскажите пожалуйста
только gui

Принятый ответ

Random integer number between 1 and 100 <= {INT/20}
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
16
4 года назад
Отредактирован Naadir
0
Если я тебя правильно понял, то вижу пару косяков:
  1. На 100 надо было умножать; а не делить 100 на полученное тобой число.
  2. Выходит, если интеллект твоего героя больше 20, то перезарядка будет всегда? Странный выбор, но ладно.
Исправь меня, если я не прав.

Ну вот просто, логически рассуждая, ответь, зачем делить 100 на (INT/20)? Ты получаешь число 2000/INT. Т.е. с ростом интеллекта шанс способности уменьшается.

И как ты определил, что у тебя что-то сильно округляется? Проводил тесты, которые показали несоответствие реального процента и того, что ты хочешь?
0
13
4 года назад
Отредактирован easypeasy
0
Naadir, Допустим INT=40, тогда Шанс {INT/20} = 2% Теперь для активации способности мне как то нужно эти 2% получить, и я это делаю через установку целочисленной переменной Математика - Random Number. 100 делю на получившиеся 2% - вот почему: Random integer number between 1 and 50(100/2) будет равняться 2% вероятности

Ну вот просто, логически рассуждая, ответь, зачем делить 100 на (INT/20)? Ты получаешь число 2000/INT. Т.е. с ростом интеллекта шанс способности уменьшается.
будет не 2000/INT а 100INT/20 , чем больше INT тем больше вероятность в %

Naadir, чем больше INT тем сильнее округляется результат, вот пример: INT=748, тогда Шанс {INT/20} = 37.4%. 100 делим на 37.4 = 2.67(оно округляется до 2) и получается Математика - Random Number between 1 and 2 вероятность 50% а не 37.4% как нужно было

у способности есть основная функция, эта как дополнительная пассивка
Загруженные файлы
2
16
4 года назад
Отредактирован Naadir
2
Чё-то ты либо объясняешь то, что делаешь, криво, либо и делаешь криво. Если ты делишь 100% на (40/20), ты получаешь 100/(40/20) = 100*(20/40) = 2000/40. Но это-то ладно. Я просто не могу понять, почему бы тебе не сделать это наиболее простым и интуитивно понятным образом?
Псевдокод:
1. INT/20 * 100 = твой шанс в процентах
2. Сравниваешь случайное число с этим шансом: если случайное число в интервале от 0 до 100 меньше либо равно твоего шанса, то абилка прокнула.
Ты вот делаешь какие-то деления, зачем-то делишь 100 на что-то, я этого не понимаю, т.к. это вообще никак, по идее, работать не должно. Делить 100 на шанс имеет смысл, только если ты хочешь посчитать, за сколько попыток твой шанс гарантированно должен прокнуть хотя бы 1 раз. И зачем ты вообще округляешь FLOAT до INTEGER? У тебя вероятность, вообще говоря, должна считаться у псевдонепрерывной величины.
4
17
4 года назад
4
Random integer number between 1 and 100 <= {INT/20}
Принятый ответ
0
13
4 года назад
0
GetLocalPlayer, если я буду так и дальше делать то будут сильные округления Random integer number between 1 and {1,2,3,4,5...} соответствуют вероятностям 100% 50% 33% 25% 20% и так далее, с такой формулой я никогда не получу вероятность, например 56%, а хотелось бы с точностью до 1%

GetLocalPlayer, кажется я догнал) спасибо

  1. INT/20 * 100 = твой шанс в процентах
  2. Сравниваешь случайное число с этим шансом: если случайное число в интервале от 0 до 100 меньше либо равно твоего шанса, то абилка прокнула.
может я что то плохо объяснял, но попробуй сам подставить несколько значений в свой вариант и поймешь что умножать на 100 точно не нужно
Чтобы оставить комментарий, пожалуйста, войдите на сайт.