Ti parlo della quinta generazione, in quanto per la sesta ancora non so.
Quando apri pokemon nel tuo ds, mentre il gioco sta caricando, si memorizza l'ora, la data, i tasti che stai tenendo premuto, e i millisecondi che ha impiegato a caricare. Usa questi valori per fare un "seed", ovvero il primo numero casuale. Dopodiché, ogni volta che serve un nuovo numero casuale, fa un semplice calcolo (lo moltiplica per un numero e gliene aggiunge un altro, poi fa un modulo) e ottiene il numero casuale successivo.
Durante il gioco, il RNG è chiamato una volta quando serve: ad esempio per determinare se un omino si gira, prevedere se e quale pokemon selvatico hai incontrato, e cose del genere.
Durante le battaglie, tuttavia, il RNG viene chiamato una esagerazione di volte senza apparente motivo: dalle 10 circa alla 30 volte al secondo, in maniera inconsistente. Quando scegli una mossa, prende il numero che c'è in quell'istante e lo usa per vedere precisione, critico ed eventuali effetti secondari.
non si sa se è così per motivi di protezione (di fatto sta funzionando, in quanto è impossibile manipolare le lotte) o se effettivamente servono dai 10 ai 30 numeri casuali al secondo, ma sono più del parere della prima.