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)
- Zhen's edit and your subsequent reversion, if I read the history right. ~Evan
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 just noticed something -- note the following line in the article:
- 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 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)
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)
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. TTEchidnaGSDS! 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?!?!? 18:44, 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... 18:50, 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)
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)
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?12:06, 10 January 2009 (UTC)
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?
- 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)
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)
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?