Sto facendo alcune simulazioni dell'equazione di Langevin, per varie forze esterne. Essendo detto che C è rand()
da stdlib.h
può introdurre pregiudizi nei miei risultati, sto usando un Mersenne Twister.
Tuttavia, vorrei sapere (e vedere) esattamente quale tipo di errori un generatore congruenziale lineare può introdurre nella mia simulazione. Queste sono cose che ho provato:
- Generazione di tuple 3D di random per cercare di vedere iperpiani. Non vedo niente.
- Fare la FFT di un grande vettore di numeri casuali. È quasi lo stesso sia per Mersenne Twister che per
rand()
. - Verifica del principio di equipartizione per una particella in moto browniano. Entrambi gli integratori concordano sul valore atteso di con lo stesso numero di cifre significative.
- Vedendo quanto bene inseriscono un numero di bin che non è un potere due. Entrambi danno gli stessi risultati qualitativi, nessuno è migliore.
- Osservando i percorsi browniani per vedere chiare divergenze da . Ancora una volta, senza fortuna.
- Distribuzione dei punti in un cerchio. Riempito e solo nel perimetro. Tra tutti loro e tra i vicini più vicini (la risposta di Shor, sotto nei commenti). Disponibile in questa sintesi , basta eseguirlo con Julia 0.5.0 dopo aver installato le librerie necessarie (consultare la guida per le istruzioni).
Vorrei sottolineare che sto cercando una distorsione introdotta nel contesto delle simulazioni fisiche. Ad esempio, ho visto come rand()
falliscono miseramente i test dieharder mentre il Mersenne Twister non lo fa, ma per il momento questo non significa troppo per me.
Hai qualche esempio fisico, concreto, su come un cattivo generatore di numeri casuali distrugge una simulazione di Montecarlo?
Nota: ho visto come PRNG RANDU
può essere terribile. Sono interessato a esempi non ovvi, di generatori che sembrano innocenti ma che alla fine introducono pregiudizi.