¿Cuál es la precisión de la función de Math.random()
de JavaScript?precisión de Math.random()
Respuesta
Math.random()
genera un número de coma flotante de 16 cifras decimales mayores que o igual a cero y menor que 1.
según Wikipedia: Double-precision floating-point format la parte fracción es 52 bits, y se sabe que el número será entre 0 y 1 (creo que no incluye 1), por lo que el exponente es -1, eso nos deja con 52 bits aleatorios.
Los 52 bits aleatorios le proporciona una precisión de 52 bits, que en base 10 es de aproximadamente
52*log10(2) ~= 15.653559774527022151114422525674 digits.
navegador motor de It/JavaScript dependiente.
La precisión máxima posible es de 52 bits, porque Math.random
devuelve un punto flotante de precisión doble entre 0 (inclusive) y 1 (exclusivo). Este máximo corresponde a aproximadamente 16 decimales, ver la respuesta de Sly1024.
En la práctica, muchos navegadores dan una precisión más pequeña. Este parece ser el estado actual:
- Firefox: los 52 bits aleatorios completos.
- V8/Chrome: 32 bits de precisión (hace algunos años que solía ser tan bajo como 30 bits, consulte https://codereview.chromium.org/1599019)
- Safari: 32 bits
- IE:?
Ejecuta la siguiente pieza de código varias veces y verás que los 21 bits finales son consistentemente 0 en Chrome y Safari.
console.log((Math.random() * Math.pow(2,53)).toString(2));
IE11: 52 bits aleatorios, aunque el código anterior ofrece resultados como '111000000101010100010110011011110111000111010101110.1' a veces. –
- 1. Math.random() explicó
- 2. ¿Math.random() es criptográficamente seguro?
- 3. Establecer semilla en Math.random()
- 4. Math.random() versus Random.nextInt (int)
- 5. Explique Math.floor (Math.random())
- 6. JS: Math.random para la matriz
- 7. ¿Por qué debería combinar Math.floor con Math.random?
- 8. Math.floor (Math.random()) ¿Qué hace +1 en realidad?
- 9. Precisión de la multiplicación de doble precisión en java?
- 10. Precisión del temporizador OpenVMS, mejor que la precisión de milisegundos.
- 11. gcc error de precisión?
- 12. Precisión de LibSVM disminuye
- 13. precisión decimal de flotadores
- 14. ¿Cómo se logra la aleatoriedad con Math.random en javascript?
- 15. ¿Por qué el JDK tiene Math.random() y la clase Random?
- 16. ¿Cómo se usa math.random para generar enteros aleatorios?
- 17. ¿Cuál es la diferencia entre "precisión" y "precisión"?
- 18. Tiempo de precisión en .NET
- 19. C# cálculos de alta precisión
- 20. Bibliotecas de Precisión Arbitrarias JVM
- 21. AS3 xyy precisión de propiedad
- 22. Aritmética de precisión arbitraria Explicación
- 23. C# Problema de precisión doble
- 24. Problemas de precisión Java BigDecimal
- 25. Precisión de flotadores con printf
- 26. Dilema de precisión del compás
- 27. precisión arbitraria de raíces cuadradas
- 28. CoreLocation Precisión aflicciones
- 29. C# DateTime.Now precisión
- 30. Doble precisión extendida
'Math.random()' es la función correcta. – tcooc
Correcto, eso es lo que quise decir. ¡Gracias! – jpc826