En una coincidencia fortuita, me encontré con este número hexadecimal mágico 0x5f3759df
y decidí tomar nota de ello.
La ciencia cambia el mundo, las matemáticas cambian la ciencia.
La última vez me encontré con un número irracional, 0.75
, que aparece en el código fuente de Java HashMap y representa el factor de carga predeterminado. Permíteme explicarte brevemente el significado de este valor: cuando la capacidad de HashMap alcanza el 75% de su capacidad total (es decir, cuando hay 12 elementos en una capacidad de 16), se realiza una operación de redimensionamiento para reducir las colisiones de hash y evitar que HashMap se degrade a una lista enlazada, lo que aumentaría significativamente el tiempo de búsqueda. ¿Por qué se eligió el valor 0.75? La explicación es bastante simple: es un compromiso entre la utilización eficiente del espacio y la reducción de los costos de búsqueda, basado principalmente en la distribución de Poisson, y 0.75 minimiza las colisiones.