Método del cuadrado medio

format_list_bulleted Contenido keyboard_arrow_down
ImprimirCitar
Una iteración del método de la media cuadrada, mostrando una semilla de 6 dígitos, que luego se coloca, y el valor resultante tiene sus 6 dígitos medios como el valor de salida (y también como la próxima semilla para la secuencia).
Gráfico dirigido de los 100 números de seudorandom de 2 dígitos obtenidos utilizando el método de media cuadra con n= 2.

En matemáticas e informática, el método del cuadrado medio es un método para generar números pseudoaleatorios. En la práctica es un método muy defectuoso para muchos propósitos prácticos, ya que su período suele ser muy corto y tiene algunas debilidades graves; repetido suficientes veces, el método del cuadrado medio comenzará a generar repetidamente el mismo número o pasará a un número anterior en la secuencia y se repetirá indefinidamente.

Historia

En matemáticas

El método fue inventado por John von Neumann y descrito por él en una conferencia en 1949.

En la charla de 1949, Von Neumann bromeó diciendo que "Cualquiera que considere métodos aritméticos para producir dígitos aleatorios está, por supuesto, en un estado de pecado". Lo que quiso decir, explicó, fue que no había verdaderos "números aleatorios", sólo medios para producirlos, y "un procedimiento aritmético estricto", como el método del cuadrado medio. #34;no es ese método". Sin embargo, descubrió que estos métodos eran cientos de veces más rápidos que leer textos "verdaderos". números aleatorios de tarjetas perforadas, que tenían importancia práctica para su trabajo en ENIAC. Encontró la "destrucción" Las secuencias de cuadrados medios son un factor a su favor, porque pueden detectarse fácilmente: "siempre se teme la aparición de ciclos cortos no detectados". Nicholas Metropolis informó secuencias de 750.000 dígitos antes de la "destrucción" mediante el uso de números de 38 bits con el "cuadrado medio" método.

El libro Los dados rotos de Ivar Ekeland ofrece un relato detallado de cómo el método fue inventado por un fraile franciscano conocido sólo como el hermano Edvin en algún momento entre 1240 y 1250. Supuestamente, el manuscrito ahora está perdido., pero Jorge Luis Borges le envió a Ekeland una copia que hizo en la Biblioteca del Vaticano.

La modificación del algoritmo del cuadrado medio con una secuencia de Weyl mejora el período y la aleatoriedad.

El método

Para generar una secuencia de números pseudoaleatorios de n dígitos, se crea un valor inicial de n dígitos y se eleva al cuadrado, produciendo un valor de 2n. -dígito. Si el resultado tiene menos de 2n dígitos, se añaden ceros a la izquierda para compensar. Los n dígitos del medio del resultado serían el siguiente número de la secuencia y se devolverían como resultado. Luego, este proceso se repite para generar más números.

El valor de n debe ser incluso para que el método funcione – si el valor de n es extraño, entonces no habrá necesariamente un "middle" único n- dígitos para seleccionar. Considere lo siguiente: Si un número de 3 dígitos es cuadrado, puede producir un número de 6 dígitos (por ejemplo, 540)2 = 291600). Si hubiera 3 dígitos medios, eso dejaría 6 − 3 = 3 dígitos que se distribuirían a la izquierda y a la derecha del medio. Es imposible distribuir uniformemente estos dígitos a ambos lados del número medio, y por lo tanto no hay " dígitos medio". Es aceptable acolchar las semillas con ceros a la izquierda para crear un valor n- Número de dígitos (por ejemplo, 540 → 0540).

Para un generador de números de ndígitos, el período no puede ser superior a 8n. Si los n dígitos del medio son todos ceros, el generador genera ceros para siempre. Si la primera mitad de un número en la secuencia es cero, los números siguientes disminuirán hasta cero. Si bien estas corridas de cero son fáciles de detectar, ocurren con demasiada frecuencia para que este método sea de uso práctico. El método del medio cuadrado también puede atascarse en un número distinto de cero. Para n = 4, esto ocurre con los valores 0100, 2500, 3792 y 7600. Otros valores semilla forman ciclos repetitivos muy cortos, por ejemplo, 0540 → 2916 → 5030 → 3009. Estos fenómenos son aún más obvio cuando n = 2, ya que ninguna de las 100 semillas posibles genera más de 14 iteraciones sin volver a 0, 10, 50, 60 o un bucle 24 ↔ 57.

Ejemplo de implementación

Aquí, el algoritmo se representa en Python 3.11.

seed_number = int()entrada()"Por favor ingrese un número de cuatro dígitos:n[######])Número = seed_numberya_seen = set()contra = 0mientras Número no dentro ya_seen: contra += 1 ya_seen.añadir()Número) Número = int()str()Número * Número).zfill()8[2:6]) # zfill añade relleno de ceros impresión()f"#{}contra}: {}Número}")impresión()f"Comenzamos con {}seed_number} y f"nos han repetido después {}contra} pasos" fcon {}Número}.")

Contenido relacionado

Conjunto vacío

En matemáticas, el conjunto vacío es el conjunto único que no tiene elementos; su tamaño o cardinalidad es cero. Algunas teorías axiomáticas de...

Historia de la lógica

La historia de la lógica se ocupa del estudio del desarrollo de la ciencia de la inferencia válida tal como se encuentran en el Organon, encontraron una...

Menor que <

El signo menor que es un símbolo matemático que denota una desigualdad entre dos valores. La forma ampliamente adoptada de dos trazos de igual longitud que...
Más resultados...
Tamaño del texto:
undoredo
format_boldformat_italicformat_underlinedstrikethrough_ssuperscriptsubscriptlink
save