Premiers pas en JavaScript
16.5 nombre aléatoire
cuy copyleft
  See You Why?  

 


l'opérateur ternaire (16.3) | | exercices sur les IF imbriqués et l'aléatoire (16.8)

Contenu

 

 

I. Les conditions IF multiples et imbriquées

voir <<< séquence précédente

 

 

II. Les nombres aléatoires

Il est fréquent, pour rendre votre application plus réaliste d'envoyer des messages aléatoires différents au fil du temps. Cela évitera de répondre "Bravo !" à chaque bonne réponse donnée par votre lecteur, et "Faux, recommence" à chaque mauvaise réponse.

De même, si vous réaliser un test, il peut être bon de varier les questions et leur ordre d'un questionnaire à l'autre.

JS dispose d'une fonction préétablie qui vous permet cette variété de réactions.
Nous étudierons plus en détail l'objet Math au chapitre 34, mais nous croyons qu'il serait utile dès maintenant de présenter cette méthode préétablie de l'objet Math, qui permet de générer des nombres au hasard.

Math.random() génère un nombre aléatoire réel, compris entre 0 et 1.

A. l'emploi de la fonction (ou méthode) pure

Employée à l'état pur, cette méthode n'est pas forcément d'un grand usage.

Observons cependant la syntaxe :

À vous de tester cette méthode, appliquée ici dix fois par une boucle FOR qui sera détaillée dans le chapitre 19

Exemple

<html>
<body>

<h1>la fonction random</h1>
<script type="text/javascript">

for (i=1;i<=10;i++) {
    nbr = Math.random();
    document.write(nbr + "<br>");
}

</script>

</body>
</html>

 

Et, comme il n'est pas rare d'avoir à choisir des valeurs entières, soit inférieures à, soit comprises entre deux limites nous proposons la réflexion suivante :

B. la génération d'un entier naturel compris entre deux valeurs

Si tous les nombres doivent être supérieurs à une valeur minimale, nous ajouterons ce minimum à chaque nombre tiré au hasard, nous l'avons appelé mini ;
de plus, les nombres tirés au hasard doivent couvrir une plage et doivent être des entiers... or, la fonction random() ne génère que des nombres décimaux (réels) compris entre 0 et 1 ;
il semble qu'en multipliant le résultat de random() par le plus grand nombre de la plage, on obtienne une valeur comprise entre zéro et ce nombre... mais toujours avec des décimales à outrance... ;
on ne devrait alors plus que laisser tomber les chiffres après la virgule, c'est-à-dire prendre la valeur entière inférieure à la somme du minimum et du choix dans la plage.

Illustrons :
je veux tirer des nombres entre 50 et 1000,
la valeur mini est 50,
la plage est 1000 moins 50, donc 950;
je tire un nombre entre 0 et 950 en écrivant random() * 950 ;
j'ajoute le minimum 50 pour obtenir une valeur (avec décimales) et comprise entre 50,xyz et 1000,uvw
que j'arrondis au plus grand entier inférieur.

 

Exemple

<html>
<body>

<h1>la fonction random</h1>
<script type="text/javascript">

for (i=1;i<=20;i++) {
    nbr = Math.random();
    plage= nbr*950;
    tire = Math.floor(plage)+50;
    document.write(tire + "<br>");
}

</script>

</body>
</html>

 

Et voilà développée la fonction (ou méthode) de JS qui crée des nombres au hasard entre deux valeurs préétablies.

Comme cette fonction ne génère que des nombres de 50 à 1000, nous reprendrons ce script en permettant d'introduire les valeurs minimales et maximales en paramètres, pour que la fonction soit plus 'portable'... ce sera fait dans le chapitre 34 qui traite des objets mathématiques.

 

 

VIII. Exercices relatifs aux conditions IF imbriqués et l'aléatoire

voir suite >>>

 

 

IX. Test relatif aux conditions IF imbriqués et l'aléatoire

voir suite >>>

 

 


l'opérateur ternaire (16.3) | | exercices sur les conditions imbriqués (16.8)