- QLog (Quantized Log) - http://s.correia.free.fr/wordpress -

Services de nombres aléatoires

Posted By Sebastiao Correia On 1 août 2007 @ 0:13 In Informatique, quantique | Comments Disabled

En informatique, les nombres aléatoires sont plutôt difficiles à obtenir. En fait, il est impossible de créer de vrais nombres aléatoires à partir d’algorithmes fonctionnant sur les ordinateurs classiques. Les algorithmes [1] permettant de générer des nombres dits pseudo-aléatoires [2] sont obligés de se répéter au bout d’un certain temps.
Les nombres aléatoires sont très importants pour divers algorithmes d’optimisation (Monte-Carlo, algorithmes évolutionnaires…), de simulation statistique, cryptographie… Et lorsqu’ils ne sont pas vraiment aléatoires, les résultats peuvent être faussés.
Jusqu’à récemment, il fallait se contenter de générateurs de nombres pseudo-aléatoires. Un des meilleurs algorithmes pour la génération de nombres pseudo-aléatoires est le Mersenne Twister [3]. Cet algorithme n’est par contre pas adapté pour les besoins de la cryptographie.

Depuis 1998, le site http://www.random.org/ [4] propose des services de génération de vrais nombres aléatoires en utilisant les fluctuations atmosphériques. Les nombres aléatoires proviennent donc d’un système chaotique et on sait que ces systèmes ne sont pas prédictibles (contrairement à un générateur de nombres pseudo-aléatoires) même s’ils sont déterministes.

D’un autre côté, la physique quantique permet aussi d’obtenir de vrais nombres aléatoires. Bien que les équations quantiques (Schrödinger ou Dirac) soient déterministes, elles portent sur des amplitudes de probabilités. La physique quantique est donc considérée comme intrinsèquement aléatoire. La société id Quantique [5], spécialisée dans la cryptographie quantique fournit un vrai générateur de nombres aléatoires [6] depuis 2004. C’est un matériel que l’on peut acheter sous forme d’un composant électronique, d’une carte PCI ou d’un appareil USB externe depuis peu.

Et maintenant, à l’ère du Web 2.0 [7], de l’architecture SOA [8], je viens de découvrir un nouveau service de génération de nombres aléatoires : Quantum Random Bit Generator Service [9].
Ce service s’appuie sur un générateur de nombres aléatoires quantique, le QRBG121 [10]. Plusieurs clients existent pour appeler ce service : en Java [11], en C++ [12], en Matlab [13], Octave [14]

Suppléments :
On pourra trouver ici différentes implémentations du Mersenne Twister [15] en Java, C++, et bien d’autres langages.

Quelques exercices pour jouer un peu avec les nombres aléatoires (et en particulier, voir comme il est difficile pour nous d’en générer) : Can You Behave Randomly? [16] (Laissez-moi un commentaire si vous faites une séquence aléatoire. Moi, je n’ai pas réussi :-) )


Article printed from QLog (Quantized Log): http://s.correia.free.fr/wordpress

URL to article: http://s.correia.free.fr/wordpress/?p=138

URLs in this post:

[1] algorithmes: http://fr.wikipedia.org/wiki/G%C3%A9n%C3%A9rateur_de_nombres_pseudo-al%C3%A9atoires

[2] pseudo-aléatoires: http://en.wikipedia.org/wiki/Pseudorandomness

[3] Mersenne Twister: http://en.wikipedia.org/wiki/Mersenne_twister

[4] http://www.random.org/: http://www.random.org/

[5] id Quantique: http://www.idquantique.com/

[6] vrai générateur de nombres aléatoires: http://www.idquantique.com/products/quantis.htm

[7] Web 2.0: http://fr.wikipedia.org/wiki/Web_2.0

[8] SOA: http://en.wikipedia.org/wiki/Service-oriented_architecture

[9] Quantum Random Bit Generator Service: http://random.irb.hr/

[10] QRBG121: http://qrbg.irb.hr/

[11] Java: http://random.irb.hr/download.php?file=qrbg-java-3.zip

[12] C++: http://random.irb.hr/download.php?file=cppclient.zip

[13] Matlab: http://random.irb.hr/download.php?file=toolbox.zip

[14] Octave: http://random.irb.hr/download.php?file=linqrand.zip

[15] ici différentes implémentations du Mersenne Twister: http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/VERSIONS/eversions.html

[16] Can You Behave Randomly?: http://www.rhodes.edu/Psych/wetzel/random/mainbody.html#imagine