Je fais quelques simulations de l'équation de Langevin, pour diverses forces externes. Être dit que C est rand()
de stdlib.h
peut introduire un biais dans mes résultats, je suis sur un Mersenne Twister.
Néanmoins, je voudrais savoir (et voir) exactement quel genre d'erreurs un générateur congruentiel linéaire peut introduire dans ma simulation. Ce sont des choses que j'ai essayées:
- Génération de tuples 3D de randoms pour essayer de voir les hyperplans. Je ne vois rien.
- Faire la FFT d'un grand vecteur de nombres aléatoires. C'est presque la même chose pour le Mersenne Twister et
rand()
. - Vérification du principe d'équipartition pour une particule en mouvement brownien. Les deux intégrateurs sont d' accord sur la valeur attendue de avec le même nombre de chiffres significatifs.
- Voyant à quel point ils se rangent bien dans un certain nombre de bacs qui ne sont pas deux. Les deux donnent les mêmes résultats qualitatifs, personne n'est meilleur.
- En regardant les chemins browniens pour voir des divergences claires de . Encore une fois, pas de chance.
- Répartition des points dans un cercle. Rempli, et uniquement dans le périmètre. Entre tous et entre voisins les plus proches (réponse de Shor, ci-dessous dans les commentaires). Disponible dans cet essentiel , exécutez-le simplement avec Julia 0.5.0 après avoir installé les bibliothèques nécessaires (voir l'essentiel pour les instructions).
Je voudrais souligner que je recherche des biais introduits dans le cadre de simulations physiques. Par exemple, j'ai vu comment rand()
échoue lamentablement les tests de la perceuse alors que le Mersenne Twister ne le fait pas, mais pour le moment cela ne signifie pas trop pour moi.
Avez-vous des exemples physiques et concrets sur la façon dont un mauvais générateur de nombres aléatoires détruit une simulation Montecarlo?
Remarque: J'ai vu à quel point les PRNG RANDU
peuvent être horribles. Je m'intéresse à des exemples pas évidents, de générateurs qui semblent innocents mais qui introduisent finalement des biais.