Tirer un nombre au hasard en JavaScript

Nombre aléatoire entre 0 et 1

Dans un programme en JavaScript on peut générer un nombre aléatoire en utilisant la fonction :

Math.random()

Cette fonction retourne un nombre aléatoire strictement compris entre 0 et 1.

Notez bien la syntaxe : la fonction random est une méthode de l'objet Math.

Voici un programme qui affiche 10 nombres au hasard entre 0 et 1 :

for(var i=0;i<10;i++){
println(Math.random());
}

Exécuter

Nombre entier aléatoire entre m et M

Il n'existe pas d'instruction en JavaScript qui permet de réaliser cela directement.

Il va falloir se débrouiller avec la fonction Math.random() et faire quelques calculs.

Pour obtenir un nombre entier entre $m$ et $M$ en partant du nombre $h$ renvoyé par Math.random() :

$\begin{aligned}[t] 0<h<1 &\Longleftrightarrow 0<h(M-m+1)<M-m+1\\ &\Longleftrightarrow m<m+h(M-m+1)<M+1 \end{aligned}$

Du fait de l'inégalité obtenue, $\text{E}(m+h(M-m+1))$ est un nombre entier compris au sens large entre $m$ et $M$ (la partie entière d'un nombre $x$, notée $\text{E}(x)$ est le plus grand entier inférieur ou égal à $x$).

En JavaScript, la partie entière d'un nombre s'obtient en utilisant la fonction Math.floor().

Dans le programme suivant, la fonction hasard est programmée en utilisant la formule obtenue à partir des inégalités précédentes, elle retourne un nombre entier aléatoire compris entre min et max inclus.
Elle est utilisée pour générer 10 nombres aléatoires compris entre 1 et 20.

function hasard(min,max){
	return min+Math.floor(Math.random()*(max-min+1));
}

for(var i=0;i<10;i++){
	println(hasard(1,20));
}

Exécuter

Dans le cas particulier (assez courant) où l'on souhaite obtenir un nombre au hasard entre 1 et max on peut écrire la fonction hasard plus simplement :

function hasard(max){
	return 1+Math.floor(Math.random()*max);
}