[ < ] [ > ]   [ << ] [Plus haut] [ >> ]         [Top] [Table des matières] [Index] [ ? ]

3.10 Nombres aléatoires

Un programme machine déterministe ne peut pas produire de véritables nombres aléatoires. Dans la plupart des cas, pseudo-randam numbers suffit. Une série de nombres pseudo-aléatoires est produite d'une façon déterminée. Les nombres ne sont pas vraiment aléatoires, mais ils ont certaines propriétés à imiter une série aléatoire. Par exemple, toutes les valeurs possibles se produisent également souvent dans une série pseudo-aléatoire.

Dans Emacs, des nombres pseudo-aléatoires sont produits à partir de “graine” de nombre. À partir de n'importe quelle graine donnée, la fonction random produit toujours le même ordre de nombres. Emacs démarre toujours par la même valeur de graine, ainsi la séquence des valeurs de random est réellement les mêmes dans chaque passe d'Emacs ! Par exemple, dans un logiciel d'exploitation, le premier appel à (random), après que vous démarriez Emacs, retourne toujours -1457731, et le second renvoie toujours -7692030. Cette répétition est utile pour la correction.

Si vous voulez des nombres aléatoires qui ne sont pas toujours pareils, exécuter (random t). Ceci choisit une nouvelle graine basée sur l'heure courante du jour et sur le numéro du processus ID d'Emacs.

Function: random &optional limit

Cette fonction renvoie un nombre entier pseudo-aléatoire. Les appels répétés renvoient a une série de nombres entiers pseudo-aléatoires.

Si limit est un nombre entier positif, la valeur est choisie pour être non négative et inférieure à limit.

Si limit est t, cela signifie de choisir une nouvelle graine basée sur heure courante et sur le numéro de processus ID d'Emacs.

Sur quelques machines, n'importe quel nombre entier représentable en Lisp peut être le résultat de random. Sur d'autres machines, le résultat peut ne jamais être plus grand qu'un certain maximum ou moins qu'un certain minimum (négatif).


Ce document a été généré par Eric Reinbold le 13 Octobre 2007 en utilisant texi2html 1.78.