General Discussion

General DiscussionBye bye PRC(pseudo random chance) : simple and fair effect chance cal...

Bye bye PRC(pseudo random chance) : simple and fair effect chance calculator in General Discussion
Thudedous

    In this post i show alternate system for PRC. It is used in dota 2 mostly for bashes and in my opinion they need a better balance.
    A chance of having bash on autoattack is named here effect occur chance(our effect is bash)

    I will use such names like: (just go back here if u forget something)
    Effect Occur Chance(EOC)
    Starting EOC(sEOC) usually sEOC=AEOC
    EOC Increase per effect not occur(EOCi)
    EOC decrease per effect occur(EOCd)
    Effect Occur(O)
    Effect Not Occur(NO)
    Average Effect Occur Chance(AEOC)

    I will show 3 exaples: 50%,33,(3)% and most common in dota2 25%
    ________________________________________________________________________
    We start from most simple chance to easy understand it - AEOC = 50%

    sEOC=50% This is not so important but we need to start with something

    EOCi =20% EOCd=20%
    RCi : RCd <==> 2 : 2 <==> 50:50
    and thats why our choosen chance is 50 %

    When our effect will occur (f.e. we will bash enemy unit) our EOC will lower it's value and when it does not EOC will become bigger

    Lets start from 4 charges(sEOC=4) (50%):
    50% -> NO -> 70%

    When effect effect occurs (O) calculate next RC = previous RC - RCd
    When it doesnt (NO) RC = RC + RCi (50% + 20% = 70%)

    Effect didnt occur but now we have chance to bash 70% (EOC=70%)
    Check a longer effect occur/not occur list starting from sEOC=50% and ending at same value

    50% -> NO -> 70% -> NO -> 90% -> O -> 70% -> NO -> 90% -> NO -> 110%
    (if EOC>=100% next time effect will surely occur )
    -> O -> 90% -> O -> 70% -> O -> 50%

    In this period NO count was 4 and O count also 4 so
    O/NO == 4 : 4 - it's 50% chance for effect to occur

    Look another example when we have much luck at beginning and our effect occurs several times:

    50% -> O -> 30% -> O -> 10% -> O -> -10% ->
    We got our effect twice with 50% chance first time, 30% second and 10% third so we were lucky but now
    -> NO -> 10%
    EOC=-10% so chance for effect = 0% and next time it will be only 10%
    (if EOC<=0% next time effect will surely not occur)

    The more effect occur the less it happens in future and contrary.
    _______________________________________________________________________
    Let' try now AEOC = 33,(3)%=1/3
    That means on each one O we will have 2 NO
    so EOCi : EOCd <==> 1 : 2

    Let's say sEOC = 30% (to calculate easier, it's not interrupting balance much actually)
    30% -> NO -> 40% -> NO -> 50% -> O -> 30%

    NO count = 2 and O count = 1 as u see that works

    ______________________________________________________________________
    AEOC = 25%
    Most important. Does it work? Let's check on exmaple on ♥♥♥♥*NG FACELLS VOID BASH

    To greater balance sEOC = AEOC
    sEOC = 2,5

    EOCi : EOCd <==> 1 : 3 so it can also be 0,5 <==> 1,5 or 1,5 <==>4,5
    and I will take the third option (but that's no matter all work)
    so EOCi=1,5
    and EOCd=4,5 (check that if u want AEOC=75% just takr sEOC=7,5 EOCi=4,5 and EOCd=1,5)

    Let me play a bit:
    25% -> O -> -20% -> NO -> -5% -> NO -> 10% -> NO -> 25% -> NO -> 40% -> NO -> 55% -> NO ->

    -> 70% -> NO -> 85% -> NO -> 100% -> O -> 55% -> O -> 10% -> O -> -35% -> NO -> -20% -> NO ->

    -> -5% -> NO -> 10% -> NO -> 25%

    ( remember that when EOC<0% next effect will not occur and when EOC>100% it will )

    O count = 4 NO count = 12 so 4 : 12 <==> 1: 3 -> AEOC = 25%

    Most common is that Void will not have bash 3 times and than have it but I showed extreme cases when effects occur in a row.
    We can see that Void can attack without bash maximum(from -35% to 100%) 8 times which is very rare. You can calculate it by multiplying all chances on NO from -35% to to 100% but remember that
    EOC = O chance
    100% - O chance = NO chance
    EOC<0% next effect will not occur and when EOC>100%

    Void can also bash maximum 3 times in a row (100% to -35%) but remember that earlier he
    hadn't bash long time and he will not get it soon in future. Actually he will have 0% bash chance next 3 times(-35% to -5%) and fourth time only 10%

    BONUS
    I will type this again but THIS time i typed additionally a chance of O/NO depending which happened

    25% -> O -> -2 -> NO -> -0,5 -> NO -> 1 -> NO -> 2,5 -> NO -> 4 -> NO -> 5,5 -> NO ->
    (25%) (100%) (100%) (90%) (75%) (60%) (45%)

    I will not type further but u can see that if sEOC=-2 our chance to not have bash 8 times is
    100% * 100% * 90% *75% * 60% * 45% * 30% * 15% = 9*7,5*6*4,5*3*1,5/1000000=
    0,0082=0,82% so its less than 1% and even if it happens we will have 100 % chance for bash next time and big chance for nextnext bash so dont worry Void.

    This topic was edited
    Zahard

      nami

        Dude if its that long, do a tl;dr...

        Hassan

          a good tl;dr would be to show a function and then graph it using wolfram, latex, matlab or smth

          This comment was edited
          MadBeast

            This thread is pure bullshit. Take probability lesson thank you. Asshole.

            J-Man

              Word porn, that is.

              This comment was edited
              Safe Base

                why would this be more "fair" than PRC??

                ♤ndenrx

                  This is basically psuedo-random, instead you just go on even better sprees... I thought that was why you disliked Psuedo? Plus this only accurate for 50%,
                  "Take probability lesson thank you." -- That guy ^

                  BenaoLifedancer

                    no

                    Z__

                      Jesus fuck your math is awful.

                      Smed

                        hahaha :D

                        Low Expectations

                          Read, was not impressed

                          Kryptnyt

                            swoleytrinity

                              Yeah, I can see your enthusiasm but I actually read it and tried to understand it and it was exhausting. Using matlab or something similar would have been a good idea, but you still get points for effort.

                              Thudedous

                                I think that present PseudoRC is based on this solution. But i would like to know proses of complicating this system so much and why it cannot be as simple as i presented here. (may i am bad in explaining but it is really simple)