PokéBase - Pokémon Q&A

# Is there a way to calculate catch rate into percentage?

0 votes
740 views

in bulbapedia it shows catch rate and percentage.

1 vote

Best answer

## Yes

I assume you're already well aware of how the modified Catch Rate is calculated;

Where a is the modified Catch Rate.

Now, how do we convert this to an actual % chance? To answer that, the games have another mathematical algorithm, referring Shake Probability and Shake Checks which determines the final percentage. The algorithm for Shake Probability is this as of Gen VI;
b = 65536 / (255/a)^0.1875

So what is a Shake Check? Basically, a random number is generated in between 0 and 65535. That number is compared to your b value, which is your shake probability. If your b value is smaller or equal to the random number generated, than your Shake Check fails, and you DO NOT catch the Pokemon. 4 Shake Checks are performed, and if you pass all 4 then the Pokemon is caught. If your a value is 255 or greater, than the shake checks are automatically bypassed and it is an immediate capture (this is why the rumor about Master Ball having a chance to fail is actually a myth).

After finding your b value, if you wish to calculate the % yourself, you can use general probability mathematics to do so. If you haven't learnt how to do this, then just go for a quick Google and I'm sure you'll find some calculators for chance of a capture.

Additionally, If you read Bulbapedia, they tell you that;
>The probability p of catching a Pokémon, given the values a and b calculated above, approximates a/255.

Don't use that. I'm pretty sure that is now incorrect, as that information used the Gen IV algorithms for shake probability and check, which have now changed in Gen VI. Also, that approximation is disgustingly inaccurate in a lot of cases, due to rounding errors that occur in your b value.

by
selected by
i didn't understand the last part. do you mean that after i made this equation :b = 65536 / (255/a)^0.1875 i make another variable with a random number (e.g. X=math.random(1 , 65535) )  . and then compare between those variable 4 times .

Is that correct ?

...