|
|
|
|
Подскажите формулы.
|
|
Lancerok | Дата: Вторник, 06 Декабря 2011, 14:27:54 | Сообщение # 1 |
1 уровень
Группа: Пользователи
Сообщений: 16
Награды: 0
Репутация: 0
Блокировки:
| Ребята, в общем такая проблема. Мне нужна формула как просчитать шанс на критический удар, но не такая типа
Действие: Set Paladin_Crit_Chance = (Random integer number between (1) and (10) Если Paladin_Crit_Chance = 1 то критует иначе нет. Такой разклад меня устраивал вполне, до тех пор пока я не решил сделать "модификатор шанса на критический удар", то есть проблема в том, что если я буду уменьшать максимальное число, которое равно (10) тем самым повышая шанс выпадения (1), то шанс на крит будет повышаться в такой прогрессии; (1 к 10 = 10%) (1 к 9 = 11.1%) (1 к 8 = 12.5%) (1 к 7 = 14.2%) (1 к 6 = 16.6%) (1 к 5 = 20%) (1 к 4 = 25%) (1 к 3 = 33.3%) (1 к 2 = 50%) Но меня интересует вопрос, какой формулой нужно пользоваться что бы допустим при получении предмета, предмет давал +7% к шансу на крит. Потому что при таком раскладе такое сделать нельзя. Ибо если шанс на крит равен - 1 к 3(33%) то, при получении предмета, максимальное что можно повысить, это до 1 к 2(50%). Так что прошу привести примеры, какие еще формулы можно использовать. П.С Я музыкант, и не силен в математике, просто провожу свободное время в редакторе варика. Так что не чмырите меня сильно)
|
|
|
|
BUUNI | Дата: Вторник, 06 Декабря 2011, 14:32:43 | Сообщение # 2 |
7 уровень
Группа: Проверенные
Сообщений: 347
Награды: 1
Репутация: 53
Блокировки:
| Может сделать что-то типо: (1 к 9,5555..)
Ну или подобие
|
|
|
|
Lancerok | Дата: Вторник, 06 Декабря 2011, 14:38:26 | Сообщение # 3 |
1 уровень
Группа: Пользователи
Сообщений: 16
Награды: 0
Репутация: 0
Блокировки:
| Quote (BUUNI) Может сделать что-то типо: (1 к 9,5555..)
Ну или подобие Пробовал я с реальными, типа 0.01 и 1.00 если равно 0.01. то крит, но так тоже не получается, потому что в итоге выйдут те же 50%, так как дойдет до 0.01 и 0.02 = 50%Добавлено (06 Декабрь 2011, 14:38:26) --------------------------------------------- Да и вообще интересуют формулы, не типа - число от (n) до (n), если (n) = 1 то крит. Какие еще способы есть, очень интересно.
|
|
|
|
Ty3uK | Дата: Вторник, 06 Декабря 2011, 15:09:29 | Сообщение # 4 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Lancerok, люди давно уже считают в варике шансы через 1 к 100, так лечге настроить малую вероятность. П.с. Я тоже музыкант, и что?
|
|
|
|
Lancerok | Дата: Вторник, 06 Декабря 2011, 15:20:06 | Сообщение # 5 |
1 уровень
Группа: Пользователи
Сообщений: 16
Награды: 0
Репутация: 0
Блокировки:
| Quote (Ty3uK) П.с. Я тоже музыкант, и что? К тому, что нету времени разбираться в дажсе, да и вообще особо заниматься чем-то кроме музыки. Ну а кроме способа 1 к 100 есть варианты ?Добавлено (06 Декабрь 2011, 15:20:06) ---------------------------------------------
Quote (Lancerok) Lancerok, люди давно уже считают в варике шансы через 1 к 100, так лечге настроить малую вероятность. Даже допустим если считать все таки по этой формуле, можно ли добиться шанса на крит не привязанного к такой прогрессии ? 10,11,12,14,16,20,25,33,50. ну в смысле если у тебя шанс равен уже 33% то следующий процент то будет в любом случае 50%, какие способы еще есть, может подскажешь ?
|
|
|
|
Ty3uK | Дата: Вторник, 06 Декабря 2011, 15:24:13 | Сообщение # 6 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Quote (Lancerok) если у тебя шанс равен уже 33% то следующий процент то будет в любом случае 50% что за странная математика? о_О если шанс равен 33, то ты можешь сделать его 34, в чем проблема? о_О
|
|
|
|
Lancerok | Дата: Вторник, 06 Декабря 2011, 15:31:17 | Сообщение # 7 |
1 уровень
Группа: Пользователи
Сообщений: 16
Награды: 0
Репутация: 0
Блокировки:
| Quote (Ty3uK) что за странная математика? о_О если шанс равен 33, то ты можешь сделать его 34, в чем проблема? о_О Я имею ввиду при рандоме от 1 к 3(Который равен 33%) следующий может быть 1 к 2 и выйдет 50%, опиши пожалуйста, как бы ты подошел к этому вопросу.Добавлено (06 Декабрь 2011, 15:31:17) --------------------------------------------- В смысле повышения шанса по 1 по 1.5% а не вот так.
|
|
|
|
Ty3uK | Дата: Вторник, 06 Декабря 2011, 15:31:20 | Сообщение # 8 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Lancerok, окей, пишу еще раз. Code local real i = GetRandomreal(1., 100.) //берем рандом число между 1 и 100 set i = i + .5 //прибавляем 0.5, т.е. увеличиваем шанс на 0.5%
Сообщение отредактировал Ty3uK - Вторник, 06 Декабря 2011, 15:32:21 |
|
|
|
Lancerok | Дата: Вторник, 06 Декабря 2011, 15:41:10 | Сообщение # 9 |
1 уровень
Группа: Пользователи
Сообщений: 16
Награды: 0
Репутация: 0
Блокировки:
| Quote (Ty3uK) ocal real i = GetRandomreal(1., 100.) //берем рандом число между 1 и 100 set i = i + .5 //прибавляем 0.5, т.е. увеличиваем шанс на 0.5% Спасибо, буду разбираться.
|
|
|
|
Ty3uK | Дата: Вторник, 06 Декабря 2011, 15:45:05 | Сообщение # 10 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| это пример на жассе, если на гуи, то там тот же принцип
|
|
|
|
Lancerok | Дата: Вторник, 06 Декабря 2011, 15:46:46 | Сообщение # 11 |
1 уровень
Группа: Пользователи
Сообщений: 16
Награды: 0
Репутация: 0
Блокировки:
| Quote (Ty3uK) это пример на жассе, если на гуи, то там тот же принцип Да да, я понял суть. еще и свои мысли возникли по этому поводу.
|
|
|
|
Extremator | Дата: Вторник, 06 Декабря 2011, 16:04:43 | Сообщение # 12 |
10 уровень
Группа: Проверенные
Сообщений: 3199
Награды: 0
Репутация: 1018
Блокировки:
| 1 к X если брать реальныи то число будет (100.00 / X) и теперь формул выглядит как
1 к X % шанса = (100.00 / X)
теперь просто устанавливаешь X на нужно значение и процент сам выпадет...
если я канешно верно понял чего хотел автор...
Сообщение отредактировал Extremator - Вторник, 06 Декабря 2011, 16:05:09 |
|
|
|
Hexing | Дата: Вторник, 06 Декабря 2011, 16:06:52 | Сообщение # 13 |
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
| Code local real seed = GetRandomReal(0., 100.) local real bonus = 10. //+10% от шмоток local real lvl = I2R(GetHeroLevel(HERO)) local real agi = I2R(GetHeroAgi(HERO,true)) local real chance = agi/( (lvl+4)(lvl+4) ) + bonus if(seed <= chance) then call BJDebugMsg("крит млеа") endif
разумеется расписал ввиде переменных ради наглядности, можешь потом оптимизировать
|
|
|
|
Extremator | Дата: Вторник, 06 Декабря 2011, 16:14:27 | Сообщение # 14 |
10 уровень
Группа: Проверенные
Сообщений: 3199
Награды: 0
Репутация: 1018
Блокировки:
| Quote (Lancerok) предмет давал +7% к шансу на крит
set I = 10 - твоё целое число set R = (100.00 / I ) - узнаём шанс по числу
set R = R + 7.00 - увеличили шанс если есть предмет дающий +7% к криту
итого... 100 / 10 + 7 = 10 + 7 = 17 (%) ...верно?
Добавлено (06 Декабрь 2011, 16:14:27) --------------------------------------------- Ну а дальше по старинке... Если (случайное число от 1 до 100) меньше или равно ( R ) То - выпал крит
Сообщение отредактировал Extremator - Вторник, 06 Декабря 2011, 16:20:30 |
|
|
|
Hexing | Дата: Вторник, 06 Декабря 2011, 16:19:21 | Сообщение # 15 |
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
| Extremator, зачем так сложно?
set I = 10 - твоё целое число set R = (100.00 / I ) - узнаём шанс по числу это ваще что?
похоже у вас тут проблемы с основами теории вероятности? автор, чем определяется вероятность крита? она всегда 10%+шансы от шмоток или как?
Сообщение отредактировал Hexing - Вторник, 06 Декабря 2011, 16:19:38 |
|
|
|
Extremator | Дата: Вторник, 06 Декабря 2011, 16:22:45 | Сообщение # 16 |
10 уровень
Группа: Проверенные
Сообщений: 3199
Награды: 0
Репутация: 1018
Блокировки:
| Quote (Hexing) зачем так сложно? у него I может быть от 2 до 10+ ...мб лимит 20-40... вот и считай ))
Добавлено (06 Декабрь 2011, 16:22:45) --------------------------------------------- я просто привёл (set I = N) где "N" это то число которое он высчитает как "1 к N"
Сообщение отредактировал Extremator - Вторник, 06 Декабря 2011, 16:23:41 |
|
|
|
Lancerok | Дата: Вторник, 06 Декабря 2011, 16:30:23 | Сообщение # 17 |
1 уровень
Группа: Пользователи
Сообщений: 16
Награды: 0
Репутация: 0
Блокировки:
| Ребят, спасибо, вот теперь инфы достаточно, не зря сюда написал) Добавлено (06 Декабрь 2011, 16:30:23) ---------------------------------------------
Quote (Hexing) автор, чем определяется вероятность крита? она всегда 10%+шансы от шмоток или как? Изначальная 5%, + можно качать плюсики которые ее повышают, соответственно по твоему принципу, добавить к первому числу столько, сколько мне нужно.
|
|
|
|
Extremator | Дата: Вторник, 06 Декабря 2011, 16:32:48 | Сообщение # 18 |
10 уровень
Группа: Проверенные
Сообщений: 3199
Награды: 0
Репутация: 1018
Блокировки:
| Lancerok, вообще ответ у тебя в вопросе (1 к 10 = 10%) = 1 / 10 = 10 (1 к 9 = 11.1%) = 1 / 9 = 11.1 (1 к 8 = 12.5%) = 1 / 8 = 12.5 (1 к 7 = 14.2%) = 1 / 7 = 14.2 (1 к 6 = 16.6%) = 1 / 6 = 16.6 (1 к 5 = 20%) = 1 / 5 = 20 (1 к 4 = 25%) = 1 / 4 = 25 (1 к 3 = 33.3%) = 1 / 3 = 33.3 (1 к 2 = 50%) = 1 / 2 = 50
Сообщение отредактировал Extremator - Вторник, 06 Декабря 2011, 16:33:36 |
|
|
|
Lancerok | Дата: Вторник, 06 Декабря 2011, 16:34:00 | Сообщение # 19 |
1 уровень
Группа: Пользователи
Сообщений: 16
Награды: 0
Репутация: 0
Блокировки:
| То есть, если переменная больше или равна 100 то проходит крит, так ведь ? Добавлено (06 Декабрь 2011, 16:34:00) ---------------------------------------------
Quote (Extremator) (1 к 10 = 10%) = 1 / 10 = 10 (1 к 9 = 11.1%) = 1 / 9 = 11.1 (1 к 8 = 12.5%) = 1 / 8 = 12.5 (1 к 7 = 14.2%) = 1 / 7 = 14.2 (1 к 6 = 16.6%) = 1 / 6 = 16.6 (1 к 5 = 20%) = 1 / 5 = 20 (1 к 4 = 25%) = 1 / 4 = 25 (1 к 3 = 33.3%) = 1 / 3 = 33.3 (1 к 2 = 50%) = 1 / 2 = 50 Ну а как тут сделаешь шанс 73% допустим ?
|
|
|
|
Extremator | Дата: Вторник, 06 Декабря 2011, 16:36:06 | Сообщение # 20 |
10 уровень
Группа: Проверенные
Сообщений: 3199
Награды: 0
Репутация: 1018
Блокировки:
| Quote (Lancerok) То есть, если переменная больше или равна 100 то проходит крит, так ведь ? (случайное число от 1.00 до 100.00) меньше или равно ( R ), то КРИТ
если случайно выпало 23.74 а у тебя R = 17.00 то у тебя (23.74) больше (17.00) - крит не выпал
если случайно выпало 12.51 а у тебя R = 17.00 то у тебя (12.51) меньше (17.00) - крит выпал
|
|
|
|
oleg_best_oleg | Дата: Вторник, 06 Декабря 2011, 16:36:55 | Сообщение # 21 |
Группа: Заблокированные
Сообщений: 1726
Награды: 0
Репутация: 654
Блокировки:
| тебе уже дали ответ несколько раз: от 1 до 100 если chance = меньше или равно 73 то бла-бла-бла
|
|
|
|
Extremator | Дата: Вторник, 06 Декабря 2011, 16:37:45 | Сообщение # 22 |
10 уровень
Группа: Проверенные
Сообщений: 3199
Награды: 0
Репутация: 1018
Блокировки:
| Quote (Lancerok) Ну а как тут сделаешь шанс 73% допустим ? ну если ты расчитываешь шанс как (1 к ЧИCЛУ), то у тебя последний шанс только 50% и 100%... +% который ты прибавишь предметами и способностями...
|
|
|
|
Lancerok | Дата: Вторник, 06 Декабря 2011, 16:44:12 | Сообщение # 23 |
1 уровень
Группа: Пользователи
Сообщений: 16
Награды: 0
Репутация: 0
Блокировки:
| Ребят, вот как я понял все что вы написали, просто скажите, к правильному ли я выводу пришел. Берем Реальную переменную от 0 до 100. Если у героя допустим шмотка дающая + 10 к первому реальному числу, т.е. к (0) То в итоге получится шанс на крит 10% так ведь, так как переменная уже выбирает не между 0 и 100, а между 10 и 100. ну а крит проходит если переменная равна 100 правильно ?Добавлено (06 Декабрь 2011, 16:44:12) --------------------------------------------- В любом случае спасибо, очень помогли мне. Я просто не правильно просчитывал все.
|
|
|
|
Hexing | Дата: Вторник, 06 Декабря 2011, 17:10:53 | Сообщение # 24 |
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
| Quote (Lancerok) Ребят, вот как я понял все что вы написали, просто скажите, к правильному ли я выводу пришел. Берем Реальную переменную от 0 до 100. Если у героя допустим шмотка дающая + 10 к первому реальному числу, т.е. к (0) То в итоге получится шанс на крит 10% так ведь, так как переменная уже выбирает не между 0 и 100, а между 10 и 100. ну а крит проходит если переменная равна 100 правильно ?
Добавлено (06 Декабрь 2011, 16:44:12) --------------------------------------------- В любом случае спасибо, очень помогли мне. Я просто не правильно просчитывал все. нет нет и еще раз нет, всё не верно берём случайное число от 0 до 100(оно всегда такое и с ним ничего не поделаешь а вот пусть переменная chance будет у нас зависить от шмоток и плюсиков твоих тогда к примеру chance = 5.0(5%) + "плюсы" + "шмоткрит" = скажем 27.43% и вот тут делаем проверку if(number которое случайное между 0 и 100 <= меньше или равно chance) then тоесть смотри представь что 100 раз ударяет герой ему выпадает 0,1,2...99 за все эти сто случаев 27 будут критическими так как 0 < 27, 1 < 27... 26 < 27 => 27 случаев = 27% endif но точность еще выше ибо GetRandomReal(0., 100.) вернут число от 0.00 до 100.00(включая 0.01 и тп)
у вас очень странная логика, но не волнуйтесь, у программистов со временем это всё само приходит
|
|
|
|
Extremator | Дата: Вторник, 06 Декабря 2011, 17:11:53 | Сообщение # 25 |
10 уровень
Группа: Проверенные
Сообщений: 3199
Награды: 0
Репутация: 1018
Блокировки:
| у тебя шанс всегда буде случайный от 1 до 100 а ты лишь проверяешь со всоим реальным шансом.. например 20 % если у тя выпало 20 или меньше то твой шанс 20 % был покрыт - крит выпал если у тя выпало больше 20 то твой шанс 20 % не был покарыт - крит не выпал!
|
|
|
|
|
|
|
|
|
|
|