Génération aléatoire d’un labyrinthe de cavernes et de tunnels

Comment générer aléatoirement un labyrinthe à base de tunnels et de cavernes en creusant tant qu'il est possible un surface ? Le résultat doit ressembler à cette sorte de gruyère (la partie praticable est en gris) :
Labyrinthe aléatoire avec murs droits
Continuer la lecture de "Génération aléatoire d’un labyrinthe de cavernes et de tunnels" →
Génération aléatoire d’un labyrinthe de cavernes et de tunnels

Tri aléatoire des éléments d’un tableau

Comment tirer aléatoirement, l'un après l'autre jusqu'à épuisement, les éléments d'un tableau ? La solution qui vient spontanément à l'esprit n'est pas efficace : elle consiste à générer un indice aléatoire, vérifier si l'élément figurant à cet indice a déjà été tiré, et si tel est le cas, recommencer.
A ce petit jeu, il est probable que le temps pris pour tirer un élément s'allonge tandis que le nombre d'éléments tirés s'accroit.
Ne peut-on procéder plus efficacement ?

Continuer la lecture de "Tri aléatoire des éléments d’un tableau" →

Tri aléatoire des éléments d’un tableau

Génération aléatoire d’un nombre entier compris dans un intervalle

Comment générer aléatoirement un nombre entier compris dans un intervalle, c'est-à-dire entre des valeurs minimale et maximale ? La solution qui vient spontanément à l'esprit (min + Math.round ((max -1) * Math.random ())) n'est pas correcte, car elle n'assure pas la représentativité statistique équitable (équiprobabilité) de tous les entiers possibles.
Par exemple, la répétition de 1 000 tirages d'une valeur dans l'intervalle [3, 9] permet de dégager les probabilités d'occurrence par valeur suivantes :
Génération aléaoitre d'un entier compris dans un intervalle (mauvais)
Pourquoi ce problème, et comment y remédier ?

Continuer la lecture de "Génération aléatoire d’un nombre entier compris dans un intervalle" →

Génération aléatoire d’un nombre entier compris dans un intervalle