4 votes

Générer des nombres aléatoires avec moins de probabilités d'obtenir des nombres plus grands.

Je veux mettre en place un générateur de nombres aléatoires qui me permette de définir le nombre maximum que je souhaite, mais aussi de modifier les probabilités pour qu'il soit plus difficile d'obtenir un nombre plus élevé.

En utilisant cette méthode, les mêmes probabilités seraient attribuées à toute valeur comprise dans l'intervalle de 100.

Math.floor(Math.random()*100);

Comment puis-je faire en sorte que les nombres deviennent progressivement plus difficiles à afficher à mesure qu'ils se rapprochent de la limite (100) ?

5voto

icktoofay Points 60218

Carré le résultat de Math.random :

var result = Math.random();
result = result * result;
result *= 100;
result = Math.floor(result);

Vous pouvez ajuster la courbe en réglant l'exposant. Voici quelques graphiques de différents exposants :

The larger exponents are steeper.

Si vous souhaitez utiliser un exposant non entier, vous devrez utiliser la fonction Math.pow .

4voto

ColinE Points 36907

Il suffit d'utiliser une fonction mathématique dont la courbe vous donne la pondération de probabilité requise. Par exemple, vous pouvez "élever au carré" votre nombre :

enter image description here

var num = Math.pow(Math.floor(Math.random()*10), 2);

La méthode ci-dessus génère un nombre aléatoire compris entre 1 et 10, puis l'élève au carré pour obtenir un nombre aléatoire compris entre 1 et 100, mais pondéré en faveur des nombres inférieurs.

Vous pouvez encore augmenter la pondération en utilisant une puissance plus élevée.

0voto

Nicholas E. Points 111

Math.pow(Math.floor(Math.random()*10), 2) ;

Ou quelque chose de similaire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X