Ci sono svariati metodi che sfruttano principi algebrici, per cui in realtà la sequenza di numeri a partire da uno stesso numero è deterministica. E' per questo che spesso si utilizzano dati esterni per "sporcare", come orario corrente, posizione del mouse, ...

Il metodo più semplice è questo
codice:
int mod = qualcosa_di_grande; //possibilmente con determinate caratteristiche per offrire una distribuzione migliore
int seed = ...;
int mul = ...;
int inc = ...;
int rand() {
  seed = (mul*seed+inc)%mod;
  return seed;
}