Es perfectamente posible que nunca volverá exactamente cero.El PRNG incluido de Java es un LCG de 48 bits del que solo se utilizan 32 bits. Para que los 53 bits de una mantisa double
sean cero, básicamente necesitará al menos una llamada aldonde los 32 bits superiores son cero y el otro donde están la mayoría de ellos. (Si no me equivoco, diría que esto nunca sucederá con el funcionamiento del generador, pero es tarde, estoy cansado y no apostaría mucho).
Dado que el La documentación del método establece explícitamente cómo se obtienen los números aleatorios, también hay poco margen para que otras implementaciones del tiempo de ejecución de Java arrojen resultados diferentes. El contrato podría decir que el número que obtiene es de [0, 1). Pero en la práctica hay una cantidad considerable de valores que nunca alcanzará (porque necesita dos valores sucesivos de un generador que produzca forzosamente una dependencia lineal entre valores sucesivos; solo hay 48 bits de estado. No puede generar todos los valores diferentes). Combinaciones de 53 bits de eso, al menos no cómo se hace).
Por supuesto, ya Math.random()
semillas automáticamente una instancia estática Random
, también podríamos tener que considerar aquí la semilla, que puede necesidad de ser muy específico para un caso de prueba para hacer ejercicio. Y eso podría significar que ese punto exacto en el tiempo podría estar a unas pocas décadas o milenios de distancia.
¿Estaba su profesor de CS hablando de Java, o más bien acerca de una función aleatoria puramente matemática con igual distribución? Debido a que dicha función, para el rango de los números reales de 0 a 1, no tiene ninguna probabilidad de 0. Tampoco para 1. Ni para 0.5: la probabilidad A solo puede asignarse a un intervalo. Pero eso por supuesto no es cierto para un rango de números discretos como lo tenemos aquí en Java ... (Estoy seguro, eso es lo que quiso decir;) –
Solo revisa la documentación de Math.random(), indicará si es inclusiva o exclusivo –
No hay error de redondeo aquí, por cierto.Obtendrás un 'doble' con 53 bits pseudoaleatorios distribuidos uniformemente en su mantisa. – Joey