Generar números aleatorios no es fácil para los ordenadores, inherentemente deterministas. Por eso se trabaja en algoritmos que permitan generarlos cumpliendo con diferentes definiciones de aleatoriedad y ciertas premisas: que no requieran mucha memoria, que el código sea rápido y no demasiado complejo y que los resultados sean «reproducibles» (por ejemplo en simulaciones). Esto último es en cierto modo un poco paradójico, pero es así como funcionan: una vez iniciado un generador con un valor dado debería generar siempre la misma secuencia.