rand() in genere è semplicemente un LCG (l'algoritmo sopra descritto da scara95), in cui il seed (ovvero, il numero di partenza con cui viene inizializzato l'algoritmo) viene impostato tramite srand (in genere a partire dall'ora corrente o da altri dati sempre diversi ad ogni avvio del programma).
Giusto per rendere l'idea, lo stesso standard C fornisce un'implementazione di esempio, che come si vede è semplicissima:
Nota comunque che esiste di molto meglio, sia in termini di generatori di numeri pseudo-casuali (ad esempio, il Mersenne Twister è uno dei generatori "di alta qualità" più diffusi) che di sorgenti di entropia (sotto Linux ad esempio /dev/random fornisce piccole quantità di byte casuali ottenuti da varie sorgenti di entropia da usare come seed per PRNG).codice:static unsigned long int next = 1; int rand(void) // RAND_MAX assumed to be 32767 { next = next * 1103515245 + 12345; return (unsigned int)(next/65536) % 32768; } void srand(unsigned int seed) { next = seed; }