Talk:Catch rate

From Bulbapedia, the community-driven Pokémon encyclopedia.
Revision as of 17:45, 22 May 2012 by Kaphotics (talk | contribs) (chance)
Jump to: navigation, search

The computer science term for "Floor" is, in fact, "int(", which simply truncates the number. "round(" would make a value like 6.9 become 7; "int(" would make it 6. I believe Zhen is correct in this case. ~Evan

What was that in reference to? - Jshadias
Zhen's edit and your subsequent reversion, if I read the history right. ~Evan
He was just editing it to make it consistent with my other changes. In any case, the after revision is the right-side column. In any case, trunc() and floor() are the same, but int() is ambiguous. It simply means conversion to integer, which could be rounding or truncating. Wish I could get TeX-rendering working... - 刘 (劉) 振霖 09:40, 12 Feb 2005 (GMT)

Is this formula accurate?

When using the formula

Chance = floor (((( TotalHP * 4 ) - ( CurrentHP * 2 )) * CatchRate ) / TotalHP ) + Status + 1

with Pokémon with high catch rates (ex. Pidgey and Rattata), the formula says that there should be about a 200% chance to catch a Pidgey at 100% HP. But there isn't a 200% chance or even a 100% chance. I caught 5 Pokémon on Route 1 of FireRed without weakening any of them and I used 15 Pokéballs. Despite the sample size, the fact that the Pokémon escaped even once is enough to raise concern about the formula. Any other thoughts on the matter? -Wild Eep

Experimental data isn't the same as theoretical results. But then again, methinks you might be misinterpreting the results of using this formula. The formula does not return a percentage, it returns a number, and in order to capture a Pokémon, the randomly generated number between 0 and 255 (or possibly a higher number than that, say, 511) has to be below the number you obtain from this formula. But I'm not the game mechanics expert. - 振霖T 02:16, 25 November 2005 (CST)

Hmm. . . using the formula for any pokémon at any level with full HP and no status ailments with a catch rate of 255 gives an output of 511. Every site I could find has the exact same formula, and they all say the random number is between 0-255. Those that site sources site Meowth346 as their source, so maybe he knows, or can find out. Slim 15:54, 29 November 2005 (CST)

Indeed, there seems to be something off with either this formula or the listed CatchRates. Trying to catch a Pokemon simply by chucking a normal Pokeball at it (that is, no damage done, no status changes) simplifies as so:
Chance = floor (Poké Ball * (((( TotalHP * 4 ) - ( CurrentHP * 2 )) * CatchRate ) / TotalHP ) + Status + 1)
Chance = floor (1 * (((( TotalHP * 4 ) - ( TotalHP * 2 )) * CatchRate ) / TotalHP ) + 0 + 1)
Chance = floor ((( TotalHP * 2 * CatchRate ) / TotalHP ) + 1)
Chance = floor (( 2 * CatchRate ) + 1)
For any CatchRate of 128 or higher, Chance is at least 257. The random number between 0 and 255 this is compared to will always be less than this, and as a result any Pokemon with a CatchRate of 128 or higher should always be caught simply by chucking a Pokeball at it. Yet this does not seem to be the case -- you can't always catch an Abra this way, despite them having a CatchRate of 200. This should give them a Chance of 401, and thus a 100% catch rate. Wild Eep and Slim seem to have noticed the same thing. Opaopa13 05:12, 27 April 2007 (UTC)
I just noticed something -- note the following line in the article:
CurrentHP is either the wild Pokémon's current HP, or if its current HP is greater than 255, use floor ( CurrentHP / 4).
It doesn't make sense to simply replace CurrentHP with floor ( CurrentHP / 4) -- that would make for a very strange function, where a Pokemon with 256 HP would be easier to catch than one with 68. Replacing all of (CurrentHP * 2 ) just makes the problem worse. This suggests a typographical error somewhere in either the formula or its explanation.
I had a hunch, and replaced (( TotalHP * 4 ) - ( CurrentHP * 2 )) with (( TotalHP / 4 ) - ( CurrentHP / 2 )). Unfortunately, that's not right either -- according to that forumla, a Pokemon above 50% health will have a negative Chance value and thus can NEVER be caught. We know that is not the case. However, I suspect something along those lines is the solution. Perhaps one of those multiplications is supposed to be a division instead. Is there any healthy chunk of experimental data to look at? Opaopa13 05:24, 28 April 2007 (UTC)

The sensible thing to do is to ask someone who knows how to use a debugger/disassembler to investigate this. Unfortunately, the only person I know who can do this is pika. - 振霖T 06:57, 28 April 2007 (UTC)

Examining an emulated copy of Pokemon Red, I did, indeed, find it impossible to NOT catch any Rattata or Pidgey I threw a Pokeball at. I was more than ready to believe this formula were true. But, as Opaopa13 said, we know it isn't, because anyone who has played the Red or Blue versions knows Abra is not so easy to catch.

Interestingly, I tried the same thing on a Pidgey in an emulated copy of the Gold version (throwing a ball at it when it was at full health), and failed to capture it until my third try.


It would be easy to explain this if Abra's catch rate was just wrong, but the catch rates must have been data-mined, so that's out. Allow me to be completely speculative here, but perhaps it's something like a rare few Pokemon having an additional chance to escape capture? Or certain catch rates that are influenced by what badges you have? It would be odd to have something like that when the programmers could just alter something's catch rate instead, though...
Well, we _know_ we get the wrong results for Abra. I'm guessing there was some minor typo somewhere, or else some minor modifier to the formula we aren't aware of.
On a side-note, I'm still really confused by the "if CurrentHP > 256, use (CurrentHP / 4) instead" thing. I just can't imagine any reason, technical or modelling-wise, where "use CurrentHP = 255" doesn't work just as well or better. Or at least divide by 2! (Pokemon HP never exceeds 1024, right? Thinking in terms of the number of bits it takes to represent these numbers...). Opaopa13 19:22, 7 May 2007 (UTC)

I think, we should just remove the formula from the page until we can get some authoritative analysis, or otherwise from experimental data. - 振霖T 06:17, 8 May 2007 (UTC)

I strongly suspect that the only problem with the formula on the site is the 2. I know that's how the old equation simplifies, so the original was probably off as well. 1+INT(B*(2-P)*C+S) makes perfect sense. Then a Pidgey or other Pokemon with a catch rate of 255 is guaranteed to be caught, since at full health and no ailments, you get 256. Any number from 0-255 will be lower than that, so you'll always catch it. On the other hand, a legendary Pokemon with 1/10th of its health left, paralyzed, with an ultra ball thrown an it, is 1+INT(2*1.9*3+5), or 17. 17/256 (since it's a less than roll, not less than or equal to) is about 6.6% (1 in 15). That seems about right, given that it's taken an average of 15-20 ultra balls for me to catch most of the legendaries. The current formula says it would be 28/256, or 10.9% (about 1 in 9), which is definitely not right. Easiest way to test would be to repeatedly try catching something with a catch rate around 120, using a standard ball, and see if it happens about half the time. Arrkhal 03:50, 20 May 2007 (UTC)

The correct formula

Apparently someone at Smogon found an extremely complex formula on a Japanese website. A good friend of mine simplified it and it seems to be 100% Accurate:

( ( 1 - CurHP * 2 / ( MaxHP * 3 ) ) * Catch * Ball * Status ) / 256


  • 1 for Normal
  • 1.5 for Poisoned, Paralyzed, or Burned
  • 2 for Asleep or Frozen


  • A level 2 Rattata, with 13/13 HP, catch rate 255, using a Pokeball. No status effects.
    • ( ( 1 - 13 * 2 / ( 13 * 3 ) ) * 255 * 1 * 1 ) / 256
    • = 0.33203125
    • ~ 33%
  • A level 70 Regigigas, with 1/234 HP, frozen, catch rate 3, using a Dusk ball.
    • ( ( 1 - 1 * 2 / ( 234 * 3 ) ) * 3 * 4 * 2 ) / 256
    • = 0.093482906
    • ~ 9%

MK 05:51, 20 May 2007 (UTC)

This does appear to be more reasonable, however, I would like to see this so-called "extremely complex" formula. There may be some rounding going on which affects the precision of the results. - 振霖T 12:05, 22 May 2007 (UTC)
The original site had gone down, but thank god for Google cache. Here. It appears my friend was a bit exaggerating when he said complex; it's actually just a tad redundant. He reduced it to a simpler form is all. Cheers. MK 08:04, 1 June 2007 (UTC)
As I suspected, there is more to it. It seems that the formula result is interpreted in two different ways depending on what the value is. - 振霖T 12:25, 1 June 2007 (UTC)

Formula is nowhere near correct

I just tried catching a Lv. 13 Feebas at full health (30 HP). I threw three dusk balls at it (while in the cavern, of course), and they all broke. On the fourth try I was able to catch it. It has a catch rate of 255, so according to this formula I have maybe a 400% chance of catching it at full health. Even going by the catch rate alone, I should have had a 100% chance of catching it. This wasn't an atypical situation either. I tried catching a few more before and after this one, and I generally wasn't able to capture them until I weakened them (I caught maybe one or two without hurting it). Once I threw an ultra ball at one, and it immediately broke. I think the pokemon's HP ratio definitely has a lot more to do with catching it than what this formula suggests.

If there are any sources on that other function that someone submitted in here (I don't know how to reply to comments, sorry :<), then that would be really nice. But I tried that equation on the above-mentioned feebas and got (1-(30*2)/(30*3))*255*4*1)/256 (the pokeball page on here says that the dusk ball is 4x in caverns, and Wikipedia says it's twice as good as an ultraball, so I'm going with 4x), which equals 340/256, or 1.328125. This is still above a 100% catch rate on something that seemed like it was maybe 50%. Even going with the assumption that the dusk ball is only 3x better than a pokeball, I still got 255/256, which awfully close to 100%. So unless the dusk ball didn't have its 3x/4x effect (maybe from me fishing in the cavern instead of walking in the cavern?), I don't think this function is true either.

--Stele007 18:59, 21 May 2007 (UTC)

Were you surfing by any chance? There has to be some way to explain this. Feebas is extremely easy to capture regardless. My friend caught several using Quick balls (4x for the first 5 turns) immediately at the start of battle and none of them missed. If you were, perhaps the Dusk balls did not work because of surfing. I know they do work while fishing... MK 06:25, 22 May 2007 (UTC)
And by several I mean over a dozen. MK 06:28, 22 May 2007 (UTC)

Safari Zone

There's something I'd like to ask. In the Safari Zone, you can throw bait and mud in Generation IV. These are said to make Pokémon easier to catch. However, does anybody know of how EXACTLY do they change the catch rate (Or make them easier to catch somehow)? Thank you. - JMS 21:27, 22 December 2007 (UTC)

Actually, I think they alter the percent chance that the Pokémon'll run for it/accuracy of the ball. TTEchidnaFire echyGSDS! 22:53, 22 December 2007 (UTC)
Actually, the equation is posted on the Japanese wikipage for Capture Rate:
Solve for S (S = Safari)
S=(Capture Rate×100)÷1275×Rock Compensation÷Food Compensation
Rock Compensation = Times rock/mud is thrown at Pokémon × 2
Food Compensation = Times food is thrown at Pokémon × 2
Then solve for a, which is a special equation for this time around:
Just keep in mind that the more mud/rocks you throw, the easier it is to capture, but the easier it is to run away. The more food you throw, the harder it is to capture but it'll stay around longer. - GimmeTOKYO


The appearances of Pokémon such as Nosepass, Tropius, Carnivine, etc., would suggest that their catch rate is low. What the hell?!?!? Lord of Origami 18:44, 24 June 2008 (UTC)

Yeah... I don't know what that means, either. ~$aturn¥oshi THE VOICES 18:49, 24 June 2008 (UTC)
remove it because it makes no sense? i had thought dialga had a low catch rate when i got the game, and it turns out to be 30, quite high for a legendary... Lord of Origami 18:50, 24 June 2008 (UTC)
I know what it's saying: They look like the kind of Pokémon that would have a lower catch rate than they actually do. That's still based on the player's conjecture and probably not worth noting. --FabuVinny |Talk Page| 18:54, 24 June 2008 (UTC)

What I believe it was saying is that the rarity of these pokémon would suggest they have a low catch rate, just like one of a kind pokémon do. However, they actually have quite high catch rates. Does this seem right? Da Rammo 06:34, 22 April 2009 (UTC)

I put a note in the lede to try to address this last interpretation. AySz88 11:50, 24 December 2009 (UTC)

Easier explanation?

I think there should be an easier explanation included in this article, something of a tl;dr section. To me, this is all mathematical mumbo-jumbo, and I commonly fail anything and everything algebraic. I could honestly care less how the game determines how a pokemon is caught, I just know that I need to lower the HP of the wild Pokémon and possibly inflict a status problem on it to catch it. Also, on major thing that's missing from the article is it doesn't explain if a higher number for a catch rate is better or worse. It may be a dumb question to ask (but I don't honestly get it, either) but you quite often have to write for the five-year-old poké-tards that will be here.

Higher number for catch rate increases likelihood of capture. It's why Mewtwo's is 3. TTEchidna 04:39, 28 June 2008 (UTC)

My brain hurts... too much math... Diachronos 16:55, 1 October 2008 (UTC)

Will you please make this article in a way that actually makes sense? It tells me nothing helpful. Alakazam 2

I agree, a simplified, even if less informative, version of this article would probably be more helpful to a lot more users.Gastly's mama 15:36, 7 December 2008 (UTC)
I tried to write a more accessible way to interpret the formula. Also see Reworking the a term below.... AySz88 11:51, 24 December 2009 (UTC)

CatchRate Calculator

I have written a small catch-rate calculator program. You put in details of the opponent's HP,Max HP, Base CatchRate,status ailment, and choose which ball you are using (along with ball-specific factors), and it tells you the chances of catching the pokemon. Should i include a link on the page? Lord of Origami 12:06, 10 January 2009 (UTC)

I think so. Where does all this come from anyways? O_O --Sivart345 01:58, 27 March 2009 (UTC)

Heavy Ball

How does it work into the formula if the ball bonus adds instead of multiplying? Does it add before or after the status bonus? --Kaoz 16:29, 28 September 2009 (UTC)

Order of operations. Multiplication first. ht14 16:42, 28 September 2009 (UTC)
Are you sure? Because if it works just like I think you're saying, you just replace the Ball Multiplier with a flat "+30" rate (or whatever technically applies). I calculated the catch rate of Groudon using a Heavy Ball VS a Great Ball, and the Great Ball outperformed the specialty Poké Ball. If that's the case, Heavy Balls are pretty useless.--Purimpopoie 13:33, 18 October 2009 (UTC)
I doubt that "order of operations" applies here; it's relatively easy to just apply the +30 before the multiplications coding-wise (much like using parenthesis). One would need to look at the game code somehow, probably, to see for certain. AySz88 12:07, 24 December 2009 (UTC)

Luxury or Friendly?

Which is more effective? ht14 01:05, 29 September 2009 (UTC)

it depends, i know squat about the catch rate, but i do know the luxury ball increases how fast the pokemon's friendship raises while the friendly(?) ball gives an immediate boost... by how much i'm not quite sure. - Geomexis 12:59, 18 January 2010 (UTC)
Luxury Balls increase the rate at which your pokemon becomes friendly from actions as outlined in the Happiness article. Friend Balls automatically set the pokemon's happiness to 200 (instead of the usual 70) when caught. Both poke balls have a catch rate of 1x. Max happiness is 255 and happiness-based evolutions happen at 220+ so usually the Friend Ball will get you there quickly for cheap. ~mjblink- unsigned comment from mjblink (talkcontribs)

Reworking the a term

In every location in this article that I can tell, it would be clearer if a were already divided by 255, i.e. substituting a/255 = a/(2^8 - 1) in each formula with a new variable. (Even that odd-looking 16711680 is 255 * 65536 .) Then a simply becomes equal to the approximation to p and there is an obvious intuitive meaning to it. I used this idea in the new lede, and it'd probably be clearer to do this in the rest of the article as well.

Is there some reason why a was defined this way that I don't know of? AySz88 11:39, 24 December 2009 (UTC)

Trivia on HP

There's a bit in the "Trivia" section about high-HP Pokémon being easier to catch at 1 HP than lower-HP ones. This is true, but it also states that "Pokémon with higher HP stats (such as Chansey) are easier to capture when their HP is reduced, despite low catch rates compared to others." But there isn't a big-enough effect to overwhelm the catch rate except at very very low HP levels. The equation in the current article can be reorganized this way:

a = catch_rate * ball_bonus * status_bonus * (1 - 2/3 * (currentHP / maxHP) )

And at 1 HP:

a = catch_rate * ball_bonus * status_bonus * (1 - 2/(3 * maxHP))

And comparing the HP penalties at 1 HP:

  • 10 HP max: 1 - 2/(3 * 10) = 1 - 2/30 = 6.7% penalty (i.e. 0.933x)
  • 20 HP max: 1 - 2/(3 * 20) = 1 - 2/60 = 3.3% penalty
  • 100HP max: 1 - 2/(3 * 100) = 1 - 2/300 = 0.66% penalty
  • 200HP max: 1 - 2/(3 * 200) = 1 - 2/600 = 0.33% penalty

... Once you get past 20ish HP, shaving off bits of that last 3% of (multiplicative) penalty is pretty negligible, equivalent to around 7 points of catch rate at most (3% of 255). AySz88 10:40, 25 December 2009 (UTC)

Generation I?

In Generation I, the mechanisms are somewhat different. For example, the number of shakes doesn't seem to be determined randomly and a Poké Ball can even entirely miss a target. Do the Gen. I games also use a completely different formula or does it work the same way as currently described in the article? - unsigned comment from Socob (talkcontribs)

The formula is definitely different in Generation I - I think Pokémon with very high catch rate (like Pidgey) were more difficult to catch, and Pokémon with very low catch rate (like Articuno) were easier to catch. By the way, the number of shakes has not been determined randomly since at least the beginning of Generation IV. Ultraflame 16:06, 16 May 2010 (UTC)
I thought so. It would be nice if we had some information about this, but I don't think that's very easy to get. About the shaking - I'm not sure if that's also what you meant, but what I was referring to by "not randomly" in Generation I is that a Ball will always shake the same amount of times on a Pokémon as long as you don't change its HP/status condition (unless it's caught). -- Socob ( Talk | Contribs ) 10:22, 21 May 2010 (UTC)
Actually, I just thought of this: You can try asking Pokémon ROM hacking communities about Generation I catch rate mechanics. The PokéCommunity is one of the few Pokémon sites that has a dedicated sub-forum for ROM hacking discussion. Ultraflame 19:32, 21 May 2010 (UTC)
I have put up a complete analysis of the R/B/Y capture algorithm on my website, based on the actual code. Something about it should at least probably be included on the page. Dragonfree 09:00, 25 February 2011 (UTC)


Somewhere else on this site, I read that the lowest possible catch rate is 3 since if it were any lower, the Master ball would have a chance of failing. KurosakisTwin 17:22, 5 August 2010 (UTC)

False. The Master Ball bypasses the formula entirely, so even if the catch rate were 0, the it would still catch the Pokémon. --a_magical_me 23:09, 5 August 2010 (UTC)
How do you know that? As far as I know, the Master Ball simply uses a value of 255 for the 'BonusBall' variable in the formula.
With this, if all the other factors in the formula multiplied would result in a number less than one, 'a' would be less than 255 and thus, the Pokémon would have a chance of escaping. Quoting from the article, "The minimum value for 'a' (for a Pokémon with full health) would be ⅓ × catch rate." Since the result of the formula without the BonusBall component has to be at least one for the Master Ball to work reliably, this means that the catch rate must at least be 3 (as ⅓ × 3 = 1).
This seems to be reasonable evidence to me as to why we've never seen catch rates lower than 3. -- Socob ( Talk | Contribs ) 12:29, 7 August 2010 (UTC)
Also, I'm pretty sure that the game wouldn't make an exception for the master ball. That would result in a lot more code, and therefore it's just easier to not make more code and make the lowest catch rate 3 so that the Master Ball can catch anything. KurosakisTwin 09:01, 11 August 2010 (UTC)
Socob, I know because it's what UPC says and it's what the reference in the article says. Also because I have read the relevant code in both Diamond and HeartGold, and I can tell you that the Master Ball is simply not implemented in the way you suggest.
KurosakisTwin, it does not require "a lot more code", just a couple lines—a small if statement—and is what any sane programmer would do.
And here is something to think about: the lowest catch rate has been 3 since the beginning, way back in Red and Blue, when a completely different algorithm was used. --a_magical_me 07:33, 21 August 2010 (UTC)
Even UPC and the reference have their sources (which might be false), and even if they aren't, no matter how it's actually calculated in the games' codes, the Master Ball works without fail, so the statements on UPC don't necessarily indicate the actual calculations.
Still, if you have viewed the code as you say, there's not much I can argue against that. All of what I've said above was, of course, simply evidence that pointed in the direction of a Master Ball with a value of 255. Naturally, the catch rates of 3 might be there to prevent "a" from being below 1 for entirely different reasons. If "a" is actually rounded down to an integer (which is actually stated in the article), then it would have to be at least 1 for the formula to work. However, this seems strange considering your last statement about the algorithm in Generation I. I haven't looked at it closely, but I guess it also needed catch rates of at least 3. I wonder, though, why the developers would go through the trouble of changing the algorithm, but leaving in the necessity of those catch rates of three or higher.
Long story short: You looked at the code, I didn't, so you're probably right. -- Socob ( Talk | Contribs ) 15:28, 24 August 2010 (UTC)

Critical Capture

Should we write about critical capture, of black and white, here?--Kantenoh 21:56, 18 December 2010 (UTC)

I belive from what i've read and when it happened to me,that there's a not so small chance (I don't know how high), that the pokeball will, when thrown, let out a woosh (a higher pitched on than normaly), absorb a pokemon, let out a metalic sound (ping a little like its captured), shake(a fast shake not a roll) in mid-air, fall down like usualy, then shake only once (not 3 times like usually), and have because of that idk probably about 3 times the capture ratio i suppose. Codebracker

Trainer pokemon level

I've been thinking about it for quite some time now, but pokemon are easier to capture depending on the level of the pokemon you battle it with.

I tried to catch a pokemon with a lv.5 and lv.8 pokemon and i couldn't catch it with ultraballs in 5 tries, than i swaped it for lv.75 pokemon and it worked on first try.

So could the level of the trainer's pokemon also apply somewhere in the formula? Codebracker

5 tries is not NEARLY enough trials to draw any kind of conclusion from. If you really want to test this, you're going to have to set up a comprehensive experiment and run it thousands of times. Alternatively, someone who has read the source code can tell you for sure. --Toksyuryel 04:40, 9 January 2011 (UTC)
I haven't read the code, but the people who wrote this article have. The only time your Pokémon's level is factored in is when you are using a Level Ball. This was actually recently brought up on the forums. --SnorlaxMonster 04:41, 9 January 2011 (UTC)

Critical Capture Rate

What is the rate of a Critical Capture in Generation V? --Nathan2055talk 21:22, 27 February 2011 (UTC)

High or low?

It should say in the very beginning whether a high or low number makes it easier/harder for a Pokémon to catch. I don't even think it's ever in the article. - Colorshade 22:20, 13 April 2011 (UTC)

Good suggestion; I've added that. :) AySz88 17:29, 18 May 2011 (UTC)

Critical capture ambiguity

In the Critical Capture section right now, it says "A random number is generated, and if it is less than the modified value, a critical capture occurs." But what range is the random number in? AySz88 20:38, 18 May 2011 (UTC)

It seems sensible for the range to be 0 to 255 inclusive, since that is the base of the modified value. Naokohiro 23:54, 7 May 2012 (UTC)

Catch chance

Can anybody tell me whether the chance to catch a Pokémon in Generation I is equal to them in Generation II (and the others) or the chance is different? E.g. I throw an ordinary ball to a full-healthy Weedle. Is the chance to catch it in all generations identically (according to Weedle 33,3%) despite the fact the capture methods are different? I'm sorry again for my bad English! --LaBumm 04:29, 24 September 2011 (UTC)

Doubt Generation III Algorithm

I'm starting to doubt the generation III algorithm. These are my findings in FireRed. I calculated for a paralyzed lvl 50 Moltres at 1 HP (exactly 1 HP due to endure) with a maximum HPmax of 165 (courtesy of and a capture rate of 3 with an Ultra Ball.
A = (3x165-2x1)x3x2/3/156x1.5 = 8 (rounded down)
B = (2^16-1)xA^(1/4)/(255)^(1/4) = 27581 (rounded down)
This gives a success rate of:
(27581 / 65535)^4 = 0.031 (rounded down) or 3.1%
At the moment I have thrown 400 (FOUR HUNDRED!) Ultra Balls, and still not captured it.
The chance of that happening would be (1-0.031)^400 = 0.000002902 or 1:344550
Please tell me I made a mistake in my calculation. It lies rather far outside the normal 0.05 error margin for experimental testing of hypotheses.
I redid the same sort of testing for Zapdos, I didn't calculate my exact chances, this time I didn't manage to catch it in 200 tries.
Ghostbird 00:11, 25 November 2011 (UTC) EDITED: Ghostbird 12:41, 28 November 2011 (UTC)

I retried catching Moltres and this time I caught it after 15-20 tries. (I wasn't counting)
The only differences I knew of:

  • I had defeated team rocket in Saffron and Giovanni in Viridian's gym.
  • I was facing it with a pokémon over lvl 50. (However I caught Articuno using a lvl 30-ish pokemon)
  • It was at more than 1 HP (he had a two pixel health bar).

I retried catching Zapdos and this time I did 200 fruitless tries. I noticed that though it had very little health left, it almost always broke free at the first check.
Something that you should know:

  • I've been using a state reload system to quickly retry catching when the capture failed. (Otherwise these capture tests, which require as much attempts as possible, are infeasible.)

I managed to Capture Zapdos on try 41 after reloading the original save (not a state save), (re)initiating combat and then using the reload state method. This time it generally broke free much later, often passing two shake checks and only breaking free at the last check, until I captured it.


  • There's something that influences catch rate, which kicks in before you are at the [Use|Cancel] screen after selecting the capture device (Ultra Ball).

Ghostbird 17:55, 28 November 2011 (UTC)

  • I believe your problem is the fact that you are using the same save state over and over. Typically, random number generators (RNG) initialize with a single random number called the seed and derive subsequent random values using a mathematical formula. When you save a state on your emulator, you are also saving the current state of the RNG used. So theoretically, you are asking the RNG for a random number in the same exact state each time, resulting in the same result every time you reload. I think this is why you managed to capture your Zapados some time after reloading the original save (new random seed). I'm not sure exactly how you used the reload state method after reinitializing combat. Did you have to hard reload the game 41 times or did you reload once and use the save state 41 times? Please elaborate on this. Invgamma 20:45, 23 December 2011 (UTC)

Investigation of the RNG

I recently thought about the specific cases where the catch formula does not seem to describe the behavior of certain Pokemon. On review, I noticed that the catch formula assumes that every random number generated is completely independent of every other random number. If the random number were using some sort of non-deterministic input to calculate a new seed every time a number is requested, this certainly would be true; however, this is normally not the case.

Consider the case of an encounter with a rare Pokemon with a somewhat high catch rate. Assume that the game finds a new random seed whenever an encounter is supposed to happen (probably sometime before) and uses that number to both determine the Pokemon encountered and to seed further random numbers. When you ask the RNG to generate the next couple random numbers, they are completely dependent on the algorithm used and the seed. With a rare Pokemon, the number of random seeded values that result in an encounter with it is sizable, but smaller than a common Pokemon. If the RNG is not reseeded, the number of possible scenarios (with strings of random numbers) greatly decreases. In this case, it could simply be a mathematical oddity (of the algorithm) where the select few seeds that allows an encounter with a rare Pokemon has subsequent random values that allow it to easily be caught (or even possibly more difficult to catch).

If this is the case, then the rarity of each Pokemon can easily influence catch probabilities by "shaping" the subsequent numbers (by pure mathematical accident). Some random values might even be impossible for, let's say, the first pokeball thrown right after an encounter of a rarer Pokemon. Invgamma 21:02, 23 December 2011 (UTC)

  • Just ran a couple of scenarios on an emulated version of Pokemon White. If I load save states right before encountering a Pokemon (a legendary that you can approach), you can get different random seeds for the battle (first action resulted differently each time). This probably means that the seed for the battle is determined based on conditions right when you encounter the pokemon. Invgamma 23:58, 23 December 2011 (UTC)
Just to let you know, I've done the investigation already :) Check Smogon's RNG Research thread[1] to get filled in on how the game seeds the battle RNG and (approximately) does the majority of battle RNG operations. RNG is only reseeded between battles. Every game uses 4 random numbers for the shake calculations, the only thing new in gen 5 is the critical capture calc.
First it calculates if critical capture, then the shake/capture values. If result < CV, pass check. Total of 4 for regular catch, 1 for CC.
Come ask about the battle RNG in IRC, synirc #smogonwifi

A comment on Critical Capture

Having read through the article and especially the section describing the critical capture, it occurred to me that since it usually uses three shake checks, it is cubing the base probability of capture. By only using one shake check, it does not get cubed, which is why it allows capture to occur easier. However, the amount it increases capture rate is dependent on how difficult it is to capture in the first place. Another way to think about what I previously said is to take any specific set of conditions (a species in the wild, how much HP it has out of its total HP, and if it has any status ailments) and calculate the probability of catching it with any one type of ball. You could then take that final probability and, assuming that the same exact conditions and ball are used, a critical capture will increase the chances of capture to the cube root of the capture probability without a critical capture. This relationship means that the lower the capture rate is in specific conditions, the more difference a critical will make in the probability of catching it.

A couple examples would be if a legendary pokemon is attempting to be caught in specific conditions that would create a normal capture probability of 1%, if it is instead a critical capture, that will increase to a 21.5% capture probability. However, at higher capture probability this difference is much smaller. If there is an easily captured pokemon at low health, with a status ailment, and the normal capture probability is 90%, a critical capture in the same circumstances would mean a 96.5% capture probability.

Is this worth adding into the article, or am I just having too much fun with the math?Mor'ranr 16:07, 19 January 2012 (UTC)

It would be cool to see the adjusted probability of that helping, but I don't think it would be one dimensional because of the different critical capture rates.
If critical capture calc passes, shake check once; else thrice.
Kaphotics 00:04, 2 February 2012 (UTC)
I definitely think it is useful to point out the relationship, and the difference in effect between Pokémon with low rates and high rates. But it might be better to use "realistic" numbers for any examples in the article (i.e. 3/255 instead of 1%). AySz88 05:07, 24 February 2012 (UTC)
Wait, shouldn't it be fourth root? The article says there's needs to be one shake check to pass instead of four normally. AySz88 05:14, 24 February 2012 (UTC)
Oops, no, was accidentally looking at a different generation. AySz88 07:40, 25 February 2012 (UTC)
Fourth roots and third roots never happen in game. The b equation listed is just a probability of you catching (ie all the shake compares lumped together). It does a*0x100 > rand(0,65535) for a pass shake calc. 4 times for gen 3-4, 3x for gen 5 after criticalcapture. That's the one gripe I have about this page, the mathematical approximations aren't what the game does. Kaphotics 19:22, 25 February 2012 (UTC)
I'm not sure what you're saying here. Yes, the algorithm used for a shake check is not literally a third or fourth root. But while it's nice to document the exact algorithm somewhere, it's probably much more useful to explain the practical results of the algorithm - thus why there are the approximations used in the lede (and occasionally sprinkled elsewhere). You can be sure that when the game designers were playing with formulas, they were doing it in general terms, not caring about whether the RNG was 16-bit or whether a division rounded up or down. The algorithms in the code are crafted to follow their intent. (The difference is famously illustrated in that old "Pokémon: Serious Business" image that had an old version of this article - indeed, it's what inspired me to craft the new lede in the first place.) Let's keep our audience in mind.
Though, that does bring up something else: it might be a good idea to more clearly separate the exact algorithms from the approximate interpretations, instead of the hodgepodge mix in the article currently. AySz88 05:23, 26 February 2012 (UTC)
Kaphotics (or, anyone), could you elaborate on "It does a*0x100 > rand(0,65535) for a pass shake calc."? I don't understand how multiplying by 256 is equivalent to 65536 / (255/a)(1/4) as listed in the article. —Naokohiro 10:55, 8 May 2012 (UTC)
When I wrote that I wasn't thinking clearly, it does keep the 4th root and such. For every check it does - rand(0xFFFF) and compares it to b. If it is less than b, it passes the wiggle calc and checks again until it either fails or the wiggles result in capture. Kaphotics 17:45, 22 May 2012 (UTC)

Generation V -- Interesting Probabilities

Since we are still getting the 4th root of the initial probability a and doing 3 shake checks, that makes the chance of capture when the critical capture chance is 0 equal to a3/4.

This takes what would normally be a linear probability always equal to a and puts it on an exponential curve.

If we have more than 30 in the dex, the probability now changes. There is a (a*m)*a1/4 chance of getting a critical capture and then succeeding in capture. Let m be the multiplier for critical capture which is based on the amount caught in the Pokédex. There's also a (1 - a*m)*a3/4 chance of getting a normal capture. So, the total chance of getting a capture is now (a*m)*a1/4 + (1 - a*m)*a3/4 (with m=0, 0.5, 1, 1.5, 2, or 2.5 respectively).

What this does is make an increasingly steeper curve the higher the value of m, but the curve always starts at (0, 0) and ends at (1, 1). Actually, in the higher values for m, the curve actually gets so steep that it begins to increase a by more than 100% for part of the curve, which suggests a higher chance of capture when the Pokémon isn't completely at its weakest. I just thought this information was interesting. It's almost like catching Pokémon has its own level up system. Naokohiro 00:55, 8 May 2012 (UTC)

Is this something worth mentioning in the article? —Naokohiro 00:58, 8 May 2012 (UTC)== Generation V -- Interesting Probabilities ==

Since we are still getting the 4th root of the initial probability a and doing 3 shake checks, that makes the chance of capture when the critical capture chance is 0 equal to a3/4.

This takes what would normally be a linear probability always equal to a and puts it on an exponential curve.

If we have more than 30 in the dex, the probability now changes. There is a (a*m)*a1/4 chance of getting a critical capture and then succeeding in capture. Let m be the multiplier for critical capture which is based on the amount caught in the Pokédex. There's also a (1 - a*m)*a3/4 chance of getting a normal capture. So, the total chance of getting a capture is now (a*m)*a1/4 + (1 - a*m)*a3/4 (with m=0, 0.5, 1, 1.5, 2, or 2.5 respectively).

What this does is make an increasingly steeper curve the higher the value of m, but the curve always starts at (0, 0) and ends at (1, 1). Actually, in the higher values for m, the curve actually gets so steep that it begins to increase a by more than 100% for part of the curve, which suggests a higher chance of capture when the Pokémon isn't completely at its weakest. I just thought this information was interesting. It's almost like catching Pokémon has its own level up system. Naokohiro 00:55, 8 May 2012 (UTC)

Is this something worth mentioning in the article? —Naokohiro 00:58, 8 May 2012 (UTC)
I haven't had Critical Capture debugged, but I noticed that what is currently the going theory on the page wasn't matching up with the battle RNG. The critical capture section is really... empty, so why not? If you want to put it in the article be sure to have an image of it! Kaphotics 17:45, 22 May 2012 (UTC)