En la computadora, los números aleatorios no pueden darse fácilmente, porque no tenemos un proceso que pueda darnos un valor al azar completamente. Hay dispositivos electrónicos que pueden conectarse a un puerto USB, por ejemplo, y entregar números aleatorios totalmente, pero estos no son equipo estándar en las máquinas que usamos (y no sé por qué). Así, estamos obligados a buscar una solución, al menos parcial, a esta dificultad y de hecho, tenemos algunas soluciones interesantes, llamadas genéricamente «números pseudo-aleatorios».
¿Pero cómo se pueden generar? En realidad no es muy difícil. El siguiente algoritmo (en Pascal/Delphi). describe esta idea:
var
a : real;
x : real;
begin
X := 0.1;
Repeat
X := 147 * X – Int(147 * X);
showmessage(Floattostr(X * 10));
X := X+ 0.1;
until X > 100;
end;
Si se repite este proceso, obtendremos la secuencia de números al azar. Así pues, podemos simular la secuencia de números de forma aleatoria.
De hecho, prácticamente todos los lenguajes de programación permiten generar números pseudo-aleatorios a través de algoritmos parecidos, usando instrucciones como random o rnd, por ejemplo. Para la mayoría de los usos cotidianos, estas rutinas funcionan muy bien, pero finalmente llega un momento que se repiten las secuencias.
¿Quién conoce algoritmos para generar secuencias aleatorias de números? ¿Quiénes tienen código fuente (en cualquier lenguaje) sobre este tema?
Referencias:
Adventures with your computer; L Rade y R.D. Nelson; Penguin Books 1984