Services de nombres aléatoires
Imprimer ce billetEn 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 permettant de générer des nombres dits pseudo-aléatoires 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. Cet algorithme n’est par contre pas adapté pour les besoins de la cryptographie.
Depuis 1998, le site http://www.random.org/ 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, spécialisée dans la cryptographie quantique fournit un vrai générateur de nombres aléatoires 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, de l’architecture SOA, je viens de découvrir un nouveau service de génération de nombres aléatoires : Quantum Random Bit Generator Service.
Ce service s’appuie sur un générateur de nombres aléatoires quantique, le QRBG121. Plusieurs clients existent pour appeler ce service : en Java, en C++, en Matlab, Octave…
Suppléments :
On pourra trouver ici différentes implémentations du Mersenne Twister 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? (Laissez-moi un commentaire si vous faites une séquence aléatoire. Moi, je n’ai pas réussi )