Esiste una libreria Java con il nome di Uncommon Maths che dichiara di fornire generatori di numeri casuali migliori di Sun e (potenzialmente) anche di BouncyCastle. Come si può determinare se la loro biblioteca può essere attendibile? Mi fido di Sun e BouncyCastle perché molte aziende importanti usano le loro cose. Non è chiaro se la matematica non comune rientra nella stessa categoria. Qualche idea?È possibile che la rara libreria matematica sia attendibile?
risposta
comune matematica sostiene di passare la Diehard tests. È affidabile come lo so.
Puoi sempre essere uno scienziato e ripetere questi test per te stesso come controllo indipendente.
Scrivi i tuoi test.
Un controllo di base di un generatore di numeri casuali può essere fatto utilizzando un chi-square test
Buona domanda;)
Tutti gli algoritmi RNG sono algoritmi ben noti inventati da persone più intelligenti di me. Sono un programmatore, non un matematico. Ho appena portato il codice C originale. Quindi devi sperare di non aver introdotto alcun bug nella conversione.
Come con la maggior parte del software open source, non c'è NESSUNA GARANZIA. Se vuoi usarlo per le simulazioni, penso che sia un'ottima scelta. Se vuoi usarlo per la crittografia, qualcosa come Fortuna sarebbe meglio.
Uncommons Maths non è così diffuso come alcune librerie. Ottiene tra 5 e 20 download a settimana. Non so quanti di quelli in realtà continueranno a usarlo in applicazioni serie. Lo uso per lo evolutionary computation e alcuni banali programmi relativi al poker con cui ho giocato.
Ho eseguito Diehard su ciascuna delle implementazioni RNG e non evidenzia eventuali difetti. Detto questo, i risultati di irriducibili non sono le più facili da interpretare:
Così non dovrebbe essere sorpreso con valori di p occasionali vicino a 0 o 1, come ad come 0,0012 e 0,9983. Quando un bit stream FAIL GRANDE, si otterrà 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
s accadere tra le centinaia che DIEHARD produce, anche con buoni RNG . Quindi tieni presente che "p succede".
Gli Uncommons Maths RNG soddisfano tutti questa sfocata definizione di successo. Ci sono uno o due valori p al di fuori dell'intervallo 0.025 .. 0.975, ma nessuno che "fallisce grande". Questo è paragonabile ai risultati ottenuti con Java SecureRandom (e meglio di java.util.Random, che fa "fail big").
Se si desidera testare questo per sé, c'è una classe chiamata DiehardInputGenerator nella distribuzione. Questo genera il file 12mb di cui hai bisogno per eseguire Diehard.
Qualche piano per portare Fortuna a Java? :) FSF ha rilasciato una versione Java ma è GPL e non estende java.util.Random per comodità: http://www.docjar.com/html/api/gnu/javax/crypto/prng/Fortuna.java .html – Gili
+1 - lavoro fantastico, Dan. Davvero ben fatto. – duffymo
Fortuna è una vera roba da cintura e bretelle. Gestisce più fonti di entropia e recupera dal compromesso. Uncommons Maths AESCounterRNG è il PRNG di base utilizzato da Fortuna, ma omette il pool di entropia, la re-seeding automatica e la gestione dei file di seed. –
- 1. Libreria matematica per Java
- 2. È possibile fare matematica all'interno dei CSS?
- 3. scons costruisce sia la libreria statica che quella condivisa
- 4. È possibile creare un Uri che non sia assoluto?
- 5. È possibile che un oggetto sia spostato quando viene restituito?
- 6. È possibile che sqlite sia anche un database inmemory?
- 7. È possibile che ViewBag sia null in MVC4?
- 8. È possibile che l'autorizzazione basata su criteri sia più dinamica?
- 9. È possibile che sia disponibile il timestamp al prompt R?
- 10. È possibile avere sia la tastiera fisica che la tastiera virtuale attive contemporaneamente?
- 11. È possibile avere un progetto contenente sia Winforms sia WPF?
- 12. -lm Non collega la libreria matematica nel makefile
- 13. Una buona libreria per la matematica 3D in C#?
- 14. costante letterale vs variabile nella libreria matematica
- 15. Perché devi collegare la libreria matematica in C?
- 16. Libreria matematica BCD per numeri grandi arbitrari?
- 17. è possibile implementare sia SAML che la sicurezza di base in un'applicazione?
- 18. gcc: perché il flag -lm è necessario per collegare la libreria matematica?
- 19. È possibile utilizzare la libreria D3 con l'elettrone (shell Atom)?
- 20. perché __builtins__ è sia modulo che dict
- 21. Qual è la libreria di matematica vettoriale/matrice più veloce in C per iPhone?
- 22. La mia espressione regolare è sia pigra che avida. Perché?
- 23. È possibile che una chiave primaria sia impostata su NULL? Perché è descritto come tale?
- 24. È possibile/deve eseguire l'attività <TResult> in un C# 5.0 attendibile che è covariante in TResult?
- 25. È possibile stabilire se un oggetto è attendibile in fase di runtime?
- 26. Ubuntu 12.04: LD non è possibile trovare la libreria
- 27. È possibile che il codice venga modificato senza che Git ne sia a conoscenza?
- 28. Com'è possibile che U [] sia trasferibile a T []?
- 29. È possibile utilizzare sia un repository locale NuGet che un repository remoto
- 30. È possibile identificare la libreria che corrisponde a determinati file di intestazione?
Puoi chiedere allo sviluppatore stesso: http://stackoverflow.com/users/5171/dan-dyer –
Uncommon Maths è stato biforcuto da Watchmaker Framework, che è una libreria di calcolo evolutiva scritta anche da Dan Dyer. È in circolazione da molto tempo e viene utilizzato in diversi progetti Apache. Penso che la sua storia di fiducia nella comunità dimostri il suo valore. – ingyhere