Javascript 5 nombres entiers non dupliqués aléatoires de 0 à 20

Quel est le meilleur moyen de générer 5 entiers aléatoires non dupliqués de 0 à 20?

Je pense, utilisez Math.random avec le plancher, bouclez-le 5 fois, vérifiez les doublons, s'il est dupliqué, aléatoire à nouveau.

Quelle est votre manière?

Edit : Une meilleure solution que celle-ci ou les autres postées ici peuvent être trouvées dans cette réponse à cette question lorsqu'elle a été interrogée en 2008. Résumant: Générer un tableau (comme suggère Darin dans sa réponse ci-dessous) et le mélanger en utilisant le Knuth- Yates-Fisher shuffle . N'utilisez pas un shuffle naïf, utilisez un qui est connu pour avoir de bons résultats.


C'est à peu près comment je le ferais, oui. J'utiliserais probablement un objet pour garder une trace des nombres entiers que j'avais déjà, car c'est pratique. Par exemple:

var ints = {}; 

Ensuite, une fois que vous avez créé un nouveau numéro aléatoire, vérifiez-le et conservez-le:

 if (!ints[number]) { // It's a keeper ints[number] = true; results.push(number); } 

Vous pouvez générer un nombre de nombres de 0 à 20, mélanger et prendre les 5 premiers éléments du tableau résultant.

Réponse tardive que je connais, mais:

 var a=[]; while(a.length <3) { var n = Math.round(Math.random() * 20); if (a.indexOf(n)==-1) a.push(n); } 

=> [14, 17, 19]