Il est impossible de créer des nombres véritablement aléatoires avec un programme informatique : les suites de nombres se répètent au bout d'un certain temps (suites périodiques), certaines valeurs sortent plus souvent que d'autres. (http://www.uqtr.ca/~delisle/Crypto/generateurs/)
Ce qui est communément appelé hasard dans un environnement numérique (un ordinateur par exemple) et qui permet de générer des événements dits imprévisibles, est un ensemble d'algorithmes, de calculs déterministes, conçu dans le but de produire des suites de nombres dont les motifs (répétition, enchaînements remarquables) ne doivent pas être identifiables.
Cette tolérance s'étend de la perception humaine toujours encline à se laisser surprendre, à la simulation de phénomènes complexes dont les effets globaux dépendent de la complexité de la source de hasard.
Ces générateurs pseudo-aléatoires (PRNG : Pseudo-Random Number Generator) sont calibrés en fonction de l'usage. Un générateur approximatif (avec une période de 256 nombres) peut être suffisant pour fariquer un dé électronique (il dépasse sans doute la mémoire de la plupart des joueurs à condition de ne pas jouer trop longtemps) mais devient très vite insuffisant pour la simulation d'imprévu dans le comportement d'une foule.
On emploie souvent la fonction 'random' (rnd, rand) en programmation pour produire de la différence, de l'imprévu. Cette fonction n'existe pas en soit et peut-être implémentée de différentes manières (cf http://www.alrj.org/docs/algo/random.php).
Une des formules les plus simples produit une suite de 256 nombres.
xn+1 = ( 137 * xn + 187) mod 28
On aurait tendance à dire que cette suite n'est pas aléatoire mais en algorithme simple, elle n'est pas moins aléatoire que n'importe quelle autre fonction RANDOM. On peut dire qu'elle joue moins à simuler ce que serait un aléatoire véritable, physique.
Dans la même veine, la suite suivante possède une période de 231-2 (soit 2147483646), mais les tirages restent finis; determinés et prévisibles.
xn+1 = 16807 * xn mod (231- 1)
Voici une implémentation graphique de cette suite en C pour linux-X11 où l'algorithme détermine le rapport de taille des carrés affichés :files/code/xtest_6.c (et le même code compilé pour linux: files/code/xtest_6.tar.gz)
Dans l'élaboration d'un dispositif technique, l'aléatoire est une question de conception qui doit s'adapter au besoin.
En termes esthétiques, l'usage de tel aléatoire va conditionner les occurences des nombres, la géométrie des suites et donc les formes qui en découlent. Dans une oeuvre dont le moteur de différence est un ou plusieurs générateurs de nombres dits aléatoires, le type d'aléatoire invoqué fait immanquablement parti de l'écriture du dispositif.
Lorsque l'on parle d'art algorithmique, d'oeuvre programme, l'ensemble des décisions qui vont déterminer les processus de l'oeuvre sont à la charge de l'artiste et on comprend bien que le choix d'un algorithme plutôt qu'un autre intervient dans la signature et ne peut être laissé au hasard.