2010-08-27 6 views

Répondre

7

Les nombres aléatoires réels peuvent uniquement être générés "à l'extérieur" d'un ordinateur, en utilisant les comptages de radioactivité et autres. Certains processeurs VIA disposent de matériel pour le faire.

Le deuxième volume de L'Art de la programmation informatique de Don Knuth passe beaucoup de temps à discuter de façon exhaustive de diverses implémentations de nombres pseudo-aléatoires à partir d'un arrière-plan mathématique. Lecture recommandée.

+1

+1 vous ne pouvez pas obtenir un nombre aléatoire réel via un langage de programmation. –

+4

Via n'importe quel langage de programmation _deterministic_. Mais beaucoup ne le sont pas, en fait. Par exemple. créer deux threads, et les laisser courir à un mutex. Vous obtenez moins d'un bit d'entropie de cette façon, mais c'est vraiment aléatoire. – MSalters

1

Vous ne pouvez pas vraiment générer un nombre réellement aléatoire avec nos ordinateurs déterministes actuels. Il existe cependant plusieurs façons de générer des nombres pseudo-aléatoires. Voir pseudorandom number generator sur wikipedia pour quelques informations sur les algorithmes.

1

Jetez un oeil à la Mersenne Twister. Je crois que c'est le même algorithme mis en œuvre par System.Random, il est très commun PRNG non cryptographiquement sécurisé avec une bonne distribution aléatoire.

1

Comme les autres réponses disent, il n'est pas possible de générer de vrais nombres aléatoires avec un ordinateur, mais comme pseudo-aléatoire, un algorithme que j'ai utilisé auparavant est le Linear Congruential Generator, son simple et rapide, mais je suis sûr qu'il y a beaucoup de meilleures alternatives.

Édition: Grammaire

Questions connexes