Generador de números aleatorios
De Wikipedia, la enciclopedia libre
La mayor parte de los generadores de números aleatorios son, en realidad, pseudoaleatorios: se calcula (o introduce internamente) un valor X0, que llamaremos semilla, y, a partir de él, se van generando X1, X2, X3, ...
Siempre que partamos de la misma semilla, se obtendrá la misma secuencia de valores.
El algoritmo básico es el método congruencial, que genera valores en el intervalo [0,1), mediante el siguiente esquema: Se fijan A, B, enteros positivos (deben tener ciertas propiedades para obtener un buen generador), y, a partir de una semilla X0 en el conjunto 0,1,...,(N-1), se generan X1 = A*X0+B (mod N) X2 = A*X1+B (mod N) X3 = A*X2+B (mod N) ... X(k+1) = A*Xk+B (mod N) ...
donde A*X+B (mod N) es el resto de la división entera de A*X+B entre N. Por ejemplo, 16 (mod 7) es 2.
A partir del método congruencial, podemos generar valores pseudoaleatorios en el intervalo [0,1) como sigue: Se toma N, entero, muy grande, se toman A, B adecuados, y una semilla X0 en 0,1,..,(N-1). A partir de ella, se generan X1,X2,X3,... por el método congruencial, y a partir de ellos, Y0,Y1,Y2,Y3,... mediante la fórmula Yk = Xk /N
El método base es el método congruencial de generación de números en el conjunto
Para ello, se toman A,B enteros adecuados, se indica un valor inicial (semilla) X0 en el conjunto , y se aplica el esquema recursivo
,
, ,...,
donde por X(modN) indica el resto de la división entera de X entre N. Por ejemplo, 12(mod7) = 5
Sabiendo generar valores en podemos generar valores en el intervalo [0,1), como sigue: Se toma N, muy grande, entero, se toma una semilla
, y se construye la secuencia
obtenida aplicando la expresión
Yk = Xk / N