User:Piotr mil/Hidden Power calculation

Type

Let us consider an example Pokémon, like Pikachu with this set of IVs:

Hit Points Attack Defense Speed Sp. Attack Sp. Defense
30 31 31 31 30 31

Hidden Power of a Pokémon with given IVs is represented by a number, calculated with this formula:

e59610ef6a7ea896e12b341341149951.png

HP(type)=Floor[(a+2b+4c+8d+16e+32f)*15/63]

where a,b,c,d,e,f are calculated in this way:

  • a=1 if the Individual Value of HP is odd. If not, a=0
  • b=1 if the Individual Value of Attack is odd. If not, b=0
  • c=1 if the Individual Value of Defense is odd. If not, c=0
  • d=1 if the Individual Value of Speed is odd. If not, d=0
  • e=1 if the Individual Value of Special Attack is odd. If not, e=0
  • f=1 if the Individual Value of Special Defense is odd. If not, f=0

Which simply means that every element of the sum in the brace is the reminder of division of corresponding IV and 2, multiplied by appropriate power of 2 (20 in case of a and 25 in case of f). The sum may range from 0 (when all IVs are even) to 63 (when all IVs are odd), inclusively. It is worth mentioning that the computed sum may be easily calculated by putting its variables a,b,c,d,e,f together in reverse order and interpreting this as a number in the binary system, which then needs to be reverted to decimal system:

fedcba(2) = 32f+16e+8d+4c+2b+a (10)

The summed value is then multiplied by 15 and divided by 63, to be sure that the number representing Hidden Power Type will range form 0 to 15, inclusively (16 values in total). The calculated number is then rounded down (floor[]), which simply means that only integral part of the calculated number is considered.

The resulting number will correspond to a type; utilize the table below.

Number Type
0 Fighting
1 Flying
2 Poison
3 Ground
4 Rock
5 Bug
6 Ghost
7 Steel
8 Fire
9 Water
10 Grass
11 Electric
12 Psychic
13 Ice
14 Dragon
15 Dark

In our example, we get:

Hit Points Attack Defense Speed Sp. Attack Sp. Defense
30
0
31
1
31
1
31
1
30
0
31
1

HP Type = Floor[(0 + 2 + 4 + 8 + 0 + 32)*15/63] = Floor [46*15/63] = Floor[10.952] = 10, which means that our

Pikachu has a grass-type Hidden Power.

Damage

Damage of the Hidden Power is calculated in a very same manner, using the following formula:

053924e0afcf77815c2db2952442a3a2.png

HP Power = Floor[((u+2v+4w+8x+16y+32z)*40/63)+30]

  • u=1 if the Individual Value of HP divided by 4 has a remainder of 2 or 3. If not, u=0.
  • v=1 if the Individual Value of Attack divided by 4 has a remainder of 2 or 3. If not, v=0.
  • w=1 if the Individual Value of Defense divided by 4 has a remainder of 2 or 3. If not, w=0.
  • x=1 if the Individual Value of Speed divided by 4 has a remainder of 2 or 3. If not, x=0.
  • y=1 if the Individual Value of Special Attack divided by 4 has a remainder of 2 or 3. If not, y=0.
  • z=1 if the Individual Value of Special Defense divided by 4 has a remainder of 2 or 3. If not, z=0.

Like before, the sum may range from 0 to 63, inclusively. The calculated number is then multiplied by 40 and divided by 63 to make sure that the fraction will not exceed 40. Then, the number is increased by 30 and rounded down, making Hidden Power's power a number ranging from 30 to 70, inclusively.

In our example, we get:

Hit Points Attack Defense Speed Sp. Attack Sp. Defense
30
1
31
1
31
1
31
1
30
1
31
1


HP Type = Floor[((1 + 2 + 4 + 8 + 16 + 32)*40/63)+30] = Floor [(63*40/63)+30] = Floor[70] = 70, which means that our Pikachu's Hidden Power's power is 70

Hit Points Attack Defense Speed Sp. Attack Sp. Defense
30 31 31 31 30 31
Hidden Power: Type:
Grass
Power:
70

Number of possible Hidden Powers

As there are 6 IVs, ranging from 0 to 31 (32 in total), the number of different possible Hidden Powers should be 326=230, which is more than billion possibilities. But let us consider two Pokémon with one different IV:

Hit Points Attack Defense Speed Sp. Attack Sp. Defense
30 31 31 31 30 31

and

Hit Points Attack Defense Speed Sp. Attack Sp. Defense
26 31 31 31 30 31

As we see, both 26 and 30 are dividable by 2 and give the remainder of 2 when divided by 4. So, in both cases the algorithms will interpret the IVs of those Pokémon in the same way, returning Grass-type Hidden Power with 70 power. In fact, there are only four possibilities of IV:


  1. IV that is not even and does not give the reminder of 2 or 3 while dividing by 4,
  2. IV that is even and gives the reminder of 2 or 3 while dividing by 4,
  3. IV that is not even and gives the reminder of 2 or 3 while dividing by 4,
  4. IV that is even and does not give the reminder of 2 or 3 while dividing by 4,

It means that for the mentioned algorithms an IV of 30 is treated in the same way like IVs of 2,6,10,14,18,22 and 26 (8 in total). As we see, there are 8 IVs in every of four categories, giving us 32 in total. Conclusively, the real number of possible Hidden Powers is 46=212=4096. This number, however is far too large, as the real number of possible variations of Hidden power is simply 16*41=656, as Hidden Power exists in 16 types and has 41 different powers. The huge difference between 656 and 4096 is explained by the function floor[], which reduces many different numbers to one.