Hay una biblioteca Java con el nombre Uncommon Maths que dice proporcionar mejores generadores de números aleatorios que Sun y (potencialmente) incluso BouncyCastle. ¿Cómo se puede determinar si se puede confiar en su biblioteca? Confío en Sun y BouncyCastle porque muchas compañías importantes usan sus cosas. No está claro si Uncommon Maths pertenece a la misma categoría. ¿Algunas ideas?¿Se puede confiar en la biblioteca de matemáticas poco común?
Respuesta
Poco frecuentes Maths afirma para pasar el Diehard tests. Eso es tan confiable como yo sé.
Siempre puede ser un científico y volver a ejecutar esas pruebas por sí mismo como un control independiente.
Escriba sus propias pruebas.
una comprobación básica de un generador de números aleatorios se puede hacer usando un chi-square test
Buena pregunta;)
Todos los algoritmos RNG son conocidos algoritmos inventadas por gente más inteligente que yo. Soy un programador, no un matemático. Acabo de portar el código C original. Así que tienes que esperar que no haya introducido ningún error en la conversión.
Al igual que con la mayoría del software de código abierto, NO HAY GARANTÍA. Si desea usarlo para simulaciones, creo que es una muy buena opción. Si desea usarlo para criptografía, algo como Fortuna sería mejor.
Uncommons Maths no es tan utilizado como algunas bibliotecas. Obtiene entre 5 y 20 descargas por semana. No sé cuántos de ellos realmente lo usan en aplicaciones serias. Lo uso para evolutionary computation y algunos programas triviales relacionados con el poker con los que he estado jugando.
He ejecutado Diehard en cada una de las implementaciones de RNG y no resalta ningún defecto. Dicho esto, los resultados de Diehard no son los más fáciles de interpretar:
Por lo tanto usted no debe sorprenderse con los valores de p ocasionales cerca de 0 o 1, tal como 0,0012 0,9983 o. Cuando un flujo de bits realmente FALLA EN GRANDE, obtendrá p
s of 0 or 1 to six or more places. By all means, do not, as a Statistician might, think that a p < .025 or p> .975 means that the RNG has "failed the test at the .05 level". Such p
entre los cientos que produce DIEHARD, incluso con buenos RNG. Así que tenga en cuenta que "p sucede".
Todos los RNG matemáticos de Uncommons satisfacen esta definición confusa de éxito. Hay uno o dos valores p fuera del rango 0.025 .. 0.975, pero ninguno que "falla grande". Esto es comparable a los resultados obtenidos con SecureRandom de Java (y mejor que java.util.Random, que "falla grande").
Si quiere probar esto usted mismo, hay una clase llamada DiehardInputGenerator en la distribución. Esto genera el archivo de 12mb que necesita para ejecutar Diehard.
¿Algún plan para transferir Fortuna a Java? :) FSF lanzó una versión de Java pero es GPL y no extiende java.util.Random por conveniencia: http://www.docjar.com/html/api/gnu/javax/crypto/prng/Fortuna.java .html – Gili
+1 - trabajo increíble, Dan. Realmente bien hecho. – duffymo
Fortuna es un verdadero cinturón de llaves. Gestiona múltiples fuentes de entropía y se recupera de un compromiso. El Uncommons Maths AESCounterRNG es el núcleo de PRNG que Fortuna usa, pero omite la puesta en común de entropía, la nueva siembra automática y la administración de archivos semilla. –
- 1. ¿Se puede confiar en jQuery?
- 2. Motivo de OOP poco común en Python?
- 3. Comprender un argumento poco común en main
- 4. HttpRequest PUT contenido en la biblioteca poco
- 5. Biblioteca de matemáticas para Java
- 6. No se puede confiar en un certificado autofirmado en iphone
- 7. ¿Buena biblioteca para matemáticas 3D en C#?
- 8. Cómo utilizar OpenSSL en la biblioteca POCO C++ correctamente
- 9. ¿Se puede mezclar el JavaScript común con jQuery?
- 10. ¿Cómo convertir una cadena en un tipo entero poco común?
- 11. ¿Se puede confiar en la clave primaria de incremento automático en su base de datos?
- 12. Autenticación Proxy en la biblioteca POCO Net C++
- 13. ¿Se puede confiar en script.readyState para detectar el final de la carga del script dinámico?
- 14. No se puede cargar la biblioteca dinámica
- 15. ¿cómo se puede usar la biblioteca clojure.algo.generic?
- 16. Biblioteca de punto flotante estricto Matemáticas en .NET
- 17. Extensiones de comunidad SQLCLR o biblioteca común
- 18. No se puede iterar std :: map de Poco :: Any
- 19. OpenSouce C/C++ analizador de expresiones matemáticas Biblioteca
- 20. ¿Hay alguna (algo) avanzada biblioteca de matemáticas de Javascript?
- 21. ldd no se puede encontrar la biblioteca en LD_LIBRARY_PATH
- 22. ¿Se puede usar la biblioteca Libsndfile en el iPhone iOS?
- 23. Biblioteca C++ de código abierto para matemáticas vectoriales
- 24. ¿Puedo confiar en mod_rewrite?
- 25. ¿Cómo se hacen las matemáticas (o matemáticas) con números mayores que MaxValue en C#?
- 26. Biblioteca funcionadora C++ para evaluar expresiones matemáticas/aritméticas
- 27. moneda Matemáticas en JavaScript
- 28. Modificador de acceso C++ indentación automática en Visual Studio 2010 poco a poco volviendo loco - ¿se puede cambiar?
- 29. biblioteca para visualizar ecuaciones matemáticas (como un editor de ecuaciones)
- 30. ¿Hay una biblioteca de matemáticas decimal para JavaScript?
Puede preguntarle al desarrollador: http://stackoverflow.com/users/5171/dan-dyer –
Uncommon Maths se bifurcó de Watchmaker Framework, que es una biblioteca de computación evolutiva también escrita por Dan Dyer. Ha existido por más tiempo, y se usa en varios proyectos Apache. Creo que su historia de confianza comunitaria demuestra su valía. – ingyhere