Talk:Catch rate

From Bulbapedia, the community-driven Pokémon encyclopedia.
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