Talk:Catch rate

From Bulbapedia, the community-driven Pokémon encyclopedia.
Revision as of 22:20, 13 April 2011 by Colorshade (talk | contribs) (→‎High or low?: new section)
Jump to navigationJump to 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.

I JUST DON'T KNOW WHAT TO BELIEVE! - Pineapple

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

Status:

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

Examples:

  • 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:
a=(S×1275)÷100
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

Trivia...

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)

Trivia

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. http://bulbapedia.bulbagarden.net/wiki/List_of_Pokemon_by_catch_rate#Trivia 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)