2009-09-20 8 views
3

Cette question n'est peut-être pas spécifique à une langue.Pourquoi la valeur garbage ne peut pas agir comme un nombre aléatoire?

  • Est-il possible de créer un vrai nombre aléatoire?
  • Si ce n'est pas la raison pour laquelle la génération de nombres aléatoires doit passer par un algorithme, pourquoi les valeurs parasites ne peuvent pas agir comme des nombres aléatoires.
+2

Comment définissez-vous un "vrai" nombre aléatoire? –

+0

devrait être imprévisible ... – Xinus

+0

imprévisible à tout générateur de nombres aléatoires en dehors. – Xinus

Répondre

19

Il peut. En fonction de votre définition d'un nombre aléatoire:

You can never be sure http://dilbert.com/dyn/str_strip/000000000/00000000/0000000/000000/00000/2000/300/2318/2318.strip.gif

Dans la plupart des applications, ce que vous attendez d'un générateur de nombres aléatoires est de générer une séquence de nombres qui sont uniformément répartis . Une valeur de poubelle ne fournit pas cette caractéristique.

Est-il possible de créer un vrai nombre aléatoire?

Si vous définissez « vraiment aléatoire » comme imprévisible, la question est « imprévisible par quoi? »

Il y a cryptographically secure (pseudo-)random number generators qui tentent de cacher l'état du générateur de nombres aléatoires à partir code niveau utilisateur, qui est, idéalement, seul le code en mode noyau peut réalistement prédire le nombre aléatoire suivant. Cependant, un système informatique isolé (sans aucune entrée externe) est une machine à états finis déterministe. C'est-à-dire, en connaissant l'état actuel de la machine, vous pouvez toujours prédire l'état suivant. Donc, si vous voulez dire "imprévisible" par un système logiciel en général, non, vous ne pouvez pas utiliser un système déterministe pour générer un "vrai hasard" selon cette définition.

Il y a un autre type d'imprévisibilité qui est plus philosophique. Même si vous comptez sur des entrées externes (telles que le bruit atmosphérique ou d'autres moyens), sont-elles vraiment imprévisibles? On pourrait dire que nous vivons dans un monde déterministe et que, comme un ordinateur numérique, tout est déterminé à se produire; donc, il n'y a pas de hasard. Je n'ai pas de réponse pour ça.

+0

Cependant, il pourrait être utilisé comme une entrée pour la graine à certaines périodes. Comme, semez toutes les x minutes avec des ordures. – Dykam

+3

+1 pour l'utilisation de Dilbert pour clarifier un point ... – Smalltown2k

+3

Il a changé de couleur. : O – shuckster

1

Les valeurs de mémoire sont imprévisibles et vous ne pouvez pas faire d'hypothèses sur celles-ci.

Si vous voulez un vrai nombre aléatoire, votre algorithme devrait impliquer quelques variables du «monde réel» (par exemple, la température du CPU, la vitesse du ventilateur, le bruit de l'environnement ..). Sinon, vos valeurs "aléatoires" seraient très prévisibles.

1

Il n'y a pas de générateur de nombres aléatoires "vrai" connu (pour le moment), mais nous avons des générateurs de nombres pseudo-aléatoires, qui génèrent des nombres qui peuvent agir comme des nombres aléatoires.

+0

Vous ne pouvez pas le faire dans un logiciel, mais le bruit thermique d'échantillonnage ou la désintégration nucléaire est aléatoire. Nous avons donc de vrais générateurs de nombres aléatoires matériels. –

+0

Il y a certainement d'autres sources de nombres aléatoires que des nombres pseudo-aléatoires. Pour la cryptographie, vous avez besoin de nombres aléatoires qui ne sont pas pseudo-aléatoires. Un exemple intéressant de nombres aléatoires peut être trouvé à http://www.lavarnd.org/. –

+0

"Certains phénomènes physiques, tels que le bruit thermique dans les diodes Zener semblent être vraiment aléatoires et peuvent être utilisés comme base pour les générateurs de nombres aléatoires, mais de nombreux phénomènes mécaniques présentent des asymétries et des biais systématiques qui rendent leurs résultats peu aléatoires."
Je regardais les choses pratiquement réalisables .. :) –

4

Par "valeurs de garbage", je suppose que vous voulez dire mémoire non initialisée. Vous n'allez pas obtenir une bonne distribution, et plus important encore, vous allez obtenir beaucoup de séquences de valeurs répétées. Obtenir des milliers du même nombre dans une rangée serait plutôt inutile pour la plupart des applications qui nécessitent des nombres aléatoires.

Pour qu'un nombre soit un "nombre aléatoire réel", il doit être non-déterministe. Et puisque à peu près tout est (probablement) déterministe, il n'y a pas vraiment de nombre aléatoire. Mélange de bruit atmosphérique est probablement le plus proche que vous pouvez obtenir à ce stade.

1

Les ordinateurs sont déterministes et ne peuvent générer que des nombres pseudo-aléatoires, sauf s'ils dépendent d'un processus stochastique externe. Un générateur de nombres pseudo-aléatoires forme une séquence qui, tôt ou tard, va se répéter. Bien sûr, les très longues séquences peuvent être pratiquement indiscernables des nombres «vraiment aléatoires». Une «valeur de déchet» pourrait être utilisée pour semer un générateur de nombres aléatoires, mais alors la question serait «quelle gamme de valeurs sont utilisées pour une graine?

Il peut introduire une prévisibilité, car nous savons que certains générateurs de nombres pseudo-aléatoires produisent la même séquence lorsqu'ils sont semés de manière identique.

Questions connexes