random – ¿Cómo funcionan los generadores de números aleatorios?

Pregunta:

Estaba reflexionando sobre la función php rand() , y pensando en cómo podría rehacerlo, y me quedé completamente estupido.

¿Cómo funcionan los generadores de números aleatorios?

Respuesta:

Los generadores de números aleatorios (RNG) en realidad están generando números pseudoaleatorios, ya que es imposible generar un número REALMENTE aleatorio. Las únicas cosas verdaderamente aleatorias son los actos de Dios, como un rayo.

Este artículo de wikipedia podría ayudarte con la explicación: http://en.wikipedia.org/wiki/Random_number_generators


Por lo que entiendo, hay básicamente dos partes de un RNG: la semilla y luego el número aleatorio elegido de esa semilla. Cuando siembras el RNG, le estás dando un equivalente a un punto de partida. Ese punto de partida tiene un montón de números que están "dentro" de él y que el programa elige. En PHP, puede usar srand () para "mezclar" las semillas, por lo que casi siempre obtiene una respuesta diferente. Luego puede usar rand (min, max) para ir a la semilla y elegir un número entre el mínimo y el máximo, inclusive.


ADVERTENCIA, POSIBLE ANALOGÍA DEL QUESO EN EL FUTURO!

Piense en cada 'semilla' como una hielera y luego en los números aleatorios como cubitos de hielo. Digamos que tienes 1000 cofres de hielo y cada cofre tiene 1000 cubitos de hielo adentro. En la feria del condado, elegirán una hielera para comenzar a usar para bebidas, y solo pueden usar un cubo de hielo. Sin embargo, solo necesitan cubitos de hielo de más de 1 pulgada cúbica. Entonces elegirán un cofre al azar entre esos 1000 cofres, y luego elegirán un cubo de hielo dentro de ese cofre al azar. Si funciona para el tamaño que quieren, lo usan. Si no es así, lo vuelven a poner en el cofre con los demás. Si quieren hacerlo un poco más divertido, cambian los cofres de antemano por un olvido total, ¡por así decirlo!

En cuanto a cómo PHP elige físicamente la semilla y el número aleatorio, no tengo suficiente conocimiento para eso (¡que es probablemente lo que más se preguntaba!). No intentaría rehacer la función rand (); para la mayoría de las aplicaciones web que creará, rand () debería ser suficiente para cualquier número aleatorio que necesite.

También echa un vistazo a los generadores congruenciales lineales, esto podría ser más de lo que estás buscando si quieres los detalles sucios: http://en.wikipedia.org/wiki/Linear_congruential_generator

¡Espero que esto ayude!

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım