In Pokemon games the IVs of the Pokemon are generated by the games and cannot be changed.
Each of the six stats has an IV associated with it, with that IV coming into calculation alongside the Pokémon's base stats, Nature, and EVs to determine the actual stat number. A Pokémon's IVs are fixed when it is generated by the game (i.e. when it is encountered in the wild or given to the player by an NPC), and cannot be changed (although Hyper Training causes stats to become values corresponding the maximum IVs).
From Pokemon Database
IVs are randomly assigned when you encounter any wild Pokémon (or receive it as a gift or egg). You cannot change a Pokémon's IVs once caught and there is no way to know the exact IVs in-game.
So there is nothing that exactly decides IVs, its just random numbers generated by the game or ROM you are using and cannot be changed by resetting.
Hope you got what you want from these sources.
Hope I helped.