Exercice 36/38

Dans le fichier "script.js" :

  • déclarez la variable result;
  • utilisez random() pour générer un nombre entier entre 0 et 10 (voir l'astuce);
  • cliquez sur "Soumettre ma réponse".

Leçon 36/38

Pour générer un nombre aléatoire, il faut utiliser la fonction random(). Cette fonction génère un nombre décimal entre 0 (inclus) et 1 (non-inclus).

Exemple :

var resultat = Math.random();

Par défaut Math.random() génère un nombre décimal dans l'intervalle [0-1[. Si vous voulez modifier cet intervalle, il va falloir ajouter un peu de code.

Par exemple pour :

  • avoir un intervalle de 0 à 10, il faudra multiplier ce que donne Math.random() par 10;
  • avoir un nombre entier, car par défaut c'est un décimal. Mais il faudra utiliser autre chose que Math.round().

Pourquoi ?

Car pour l'instant, le nombre généré peut aller jusque 10.99 et des poussières. Avec Math.round() cela donnera l'entier 11, mais on veut rester dans l'intervalle 0-10. Il faudra donc utiliser Math.floor() qui arrondi à l'entier inférieur, donc 10.

Votre code devra tenir sur une seule ligne, voilà un début :

var nombre = Math.floor(ici la fonction Math.random() multiplié par 11);

Commentaires les mieux notés

  • nkeshimanabrice-37

    pouvez-vous corriger mon code...

  • mram Administrateur

    Dans l'astuce il y a le détail, certes il faut cliquer dessus pour la voir sinon dans les instructions elles-mêmes ce n'est pas présenté en effet.

  • v.redois

    "Avez-vous utilisé la fonction Math.random() comme indiqué dans l'astuce et affecté le résultat à "result" ?"

  • mram Administrateur

    Le code de l'exercice sera mis à jour prochainement.

66 Commentaires

  • mram

    mram Administrateur

    Dans l'astuce il y a le détail, certes il faut cliquer dessus pour la voir sinon dans les instructions elles-mêmes ce n'est pas présenté en effet.

    le 24/11/2016 à 12h53

  • v.redois

    v.redois

    "Avez-vous utilisé la fonction Math.random() comme indiqué dans l'astuce et affecté le résultat à "result" ?"

    le 20/05/2016 à 10h58

  • mram

    mram Administrateur

    Le code de l'exercice sera mis à jour prochainement.

    le 20/05/2016 à 10h58

  • mram

    mram Administrateur

    Essayez avec un espace autour du signe = . Car ici difficile de distinguer la variable et le reste de l'opération.

    le 21/09/2016 à 08h58

  • egravouil

    egravouil

    Bonjour, je ne comprends pas ce qui ne fonctionne pas dans mon code : var result=Math.floor(Math.random()*10+1); ? Merci.

    le 16/09/2016 à 15h17

  • veronicalavroff

    veronicalavroff

    comment faire la multiplication et addition après random()?

    le 07/07/2016 à 02h29

  • bretel.val

    bretel.val

    J'ai rencontré de nombreux problèmes sur cet exercice comme les précédents, on me demandait si j'avais bien mis le code indiqué ou les () etc puis quand je rechargeais la page et mettais le même résultat, cela fonctionnait comme par magie mais ici un simple ; m'a rendu le résultat positif alors que dans les exercices d'après qui se trouve demande un résultat sur une seule ligne, je ne mettais pas ; et ça marchait.

    le 27/03/2017 à 17h04

  • mram

    mram Administrateur

    Votre code est incomplet, il faut utiliser aussi Math.floor()

    le 07/07/2016 à 20h16

  • pascal-ds

    pascal-ds

    bonjour, apparemment la formule fonctionne mais le robot correcteur n'en veut pas... qu'est-ce qui cloche ? Au passage, je ne crois pas encore avoir vu passer la fonction Math.floor()...

    le 22/08/2016 à 16h04

  • mram

    mram Administrateur

    Bonjour, avez-vous lu l'astuce de l'énoncé, notamment l'utilisation de Math.floor() ... ?

    le 23/08/2016 à 00h23

  • pascal-ds

    pascal-ds

    mais non justement, il n'est pas question de Math.floor dans l'exercice précédent ??

    le 23/08/2016 à 09h07

  • pascal-ds

    pascal-ds

    ceci dit, pour voir je viens de remplacer Math.round par Math.floor, cela donne également un entier, mais le robot correcteur n'est toujours pas d'accord.

    le 23/08/2016 à 09h11

  • pascal-ds

    pascal-ds

    même en décomposant, cela fonctionne... sauf pour le correcteur.

    le 23/08/2016 à 09h15

  • mram

    mram Administrateur

    Et non votre code est incomplet et ne fonctionne pas comme demandé : je l'ai testé plusieurs fois pour vérifier toutes les possibilités et il génère des entiers entre 0 et 10, l'énoncé demande des entiers entre 1 et 10. Relisez l'astuce.

    le 23/08/2016 à 14h42

  • mram

    mram Administrateur

    Math.round() et Math.floor() servent à arrondir, mais pas de la même façon : si l'exercice précédent présente Math.round(), le but de cet exercice est de montré la différence avec Math.floor() , d'où l'importance de lire l'astuce.

    le 23/08/2016 à 14h46

  • pascal-ds

    pascal-ds

    bonjour, je me demande si nous avons les mêmes pages... A aucun moment dans les exercices précédents il n'est question de Math.floor, dont j'ai trouvé la définition ailleurs sur le web. L'astuce qui retourne à l'exercice précédent traite de Math.round, donc a plutôt tendance à induire en erreur qu'à apporter une solution. J'ai bien compris le principe. Il faut multipler Math.random par 10 pour obtenir un chiffre entre 0 et 9 et ajouter 1 pour obtenir un résultat entre 1 et 10. Je cherche pour l'instant la bonne syntaxe...

    le 24/08/2016 à 09h07

  • pascal-ds

    pascal-ds

    la dernière tentative semble pourtant fonctionner... pas de message d'erreur dans l'éditeur et après moults tentatives j'obtiens bien des résultats entre 1 et 10...

    le 24/08/2016 à 09h13

  • pascal-ds

    pascal-ds

    aaaaah ! gag ! je viens de mettre à jour le navigateur et voilà que le lien sur le mot astuce apparait quand je passe dessus ?!! du coup je comprends mieux. (et dire que j'ai fait tous les exercices jusqu'ici sans y avoir accès...) bon, je découvre donc que j'ai écrit ce que donne l'astuce, mais que la réponse n'est pas validée.

    le 24/08/2016 à 09h18

  • mram

    mram Administrateur

    Non, comme vous dites, il n'est pas question de Math.floor() dans les exercices précédents. Depuis le début je parle bien de l'astuce de cet exercice qui explique tout, et notamment Math.floor().

    le 24/08/2016 à 13h37

  • mram

    mram Administrateur

    Math.floor() doit contenir tout le reste de l'opération entre ses parenthèses. L'ordre des parenthèses est important dans la priorité des calculs effectués.

    le 24/08/2016 à 13h38

  • bruno

    bruno

    「Var result=Math.floor(1+10*Math.random())」 n'est pas bon? Pourtant cela fonctionne.

    le 08/09/2016 à 14h22

  • mram

    mram Administrateur

    Oui c'est parce que vous avez utilisé un ordre différent : Math.random()*10+1 fonctionnera (mais votre code est juste)

    le 08/09/2016 à 14h43

  • line.lagarde

    line.lagarde

    même pb

    le 06/06/2016 à 15h23

  • mram

    mram Administrateur

    Quel est le message qui s'affiche ?

    le 06/06/2016 à 16h00

  • aminehadef

    aminehadef

    Bonjour pouvez-vous m'aidé a comprendre mon erreur s'il vous plait s'il vous plait var result=Math.floor(Math.random()*10)+ 1;

    le 12/12/2016 à 04h08

  • Florian

    Florian

    "Avez-vous utilisé la fonction Math.random() comme indiqué dans l'astuce et affecté le résultat à "result" ?"

    le 13/06/2016 à 19h51

  • mram

    mram Administrateur

    Avez-vous regardé l'astuce ? Votre code est incomplet ...

    le 13/06/2016 à 20h55

  • mram

    mram Administrateur

    C'est le +1 qui est mal placé, il doit se trouver juste après la multiplication. Toute l'opération doit se trouver dans Math.floor() qui permet d'arrondir à l'entier inférieur le résultat final.

    le 13/12/2016 à 11h16

  • philippe.kerouanton

    philippe.kerouanton

    A quel moment il est demandé de renvoyer un entier ?

    le 21/11/2016 à 22h20

  • yarkagone

    yarkagone

    mon code est le suivant : var result= Math.floor(Math.random()*10+1); ça ne passe pas.....help please.

    le 10/01/2017 à 21h02

  • yarkagone

    yarkagone

    ça a marché .......il a fallu mettre un espace autour du =. Etonnant ! Pourquoi ce n' est pas toujours le cas ?

    le 10/01/2017 à 21h04

  • mram

    mram Administrateur

    Oui en effet, dans les exercices Javascript on vérifie aussi la propreté du code de façon plus ou moins stricte selon les exercices. On a prévu de faire en sorte que ce ne soit plus bloquant pour la validation si le code en lui-même est juste. J'ai mis à jour cet exercice pour que ce soit moins stricte.

    le 11/01/2017 à 19h18

  • nathalie.chenparis

    nathalie.chenparis

    QUESTION sur l'Astuce: si l'intervalle est de 0 à 10, du coup le code c'est var result = Math.random(0,10) ? J'avoue que je n'ai pas compris tout la lecon bien que j'ai trouvée le résultat de l'exercice

    le 01/05/2018 à 16h34

  • mram

    mram Administrateur

    Bonjour, attention la fonction .random() ne prend aucun paramètre en entrée (rien dans les parenthèse) et elle retourne un chiffre décimal entre 0 et 1.

    le 04/05/2018 à 07h01

  • mram

    mram Administrateur

    Il faut donc ensuite faire des arrondis et des multiplications pour avoir un chiffre rond.

    le 04/05/2018 à 07h01

  • Carine1972

    Carine1972

    Bonjour. J'ai fini par comprendre une phrase mais si on la lit telle qu'elle, elle ne veut rien dire : "par exemple, pour : avoir un nombre entier, car par défaut c'est un décimal. Mais il faudra utiliser autre chose que Math.round(). Pourquoi ?" A revoir, à mon avis.

    le 31/08/2017 à 15h39

  • mram

    mram Administrateur

    Bonjour, pourquoi utiliser autre chose que Math.round() ? C'est expliqué juste en dessous en fait.

    le 06/09/2017 à 10h10

  • julien.y.richard

    julien.y.richard

    Bonjour, voici mon code "var result = Math.floor((Math.random()*10)+1); console.log(result); alert(result);". Il fonctionne en alert et console mais ne passe pas l'exercice. Pourquoi?

    le 13/11/2017 à 10h10

  • mram

    mram Administrateur

    Bonjour, oui ça fonctionne mais on peut faire plus simple. Il y a un couple de parenthèses inutile.

    le 16/11/2017 à 17h09

  • nathalie.chenparis

    nathalie.chenparis

    ???

    le 02/05/2018 à 19h44

  • mram

    mram Administrateur

    Oui ?? Des explications nous aideraient :)

    le 04/05/2018 à 07h51

  • lienmontage

    lienmontage

    HOopa gangnamstyle j'ai réussi : var result = Math.floor(Math.random()*10+1);

    le 27/11/2017 à 15h16

  • rachid

    rachid

    Solution a ce probleme est le suivant : var result = Math.floor(Math.random()*10+1); bon courage.

    le 27/11/2017 à 20h41

  • oedamax

    oedamax

    var result = Math.floor((Math.random()*10)+1); n'est il pas la bonne réponse? car si c'est le cas, il m'indique une erreur

    le 16/11/2017 à 00h23

  • mram

    mram Administrateur

    Bonjour, c'est correct mathématiquement, mais il y a moyen de faire plus simple en supprimant un couple de parenthèses.

    le 16/11/2017 à 18h48

  • bruel.william-2

    bruel.william-2

    Bonjour pourriez vous m'aider ?

    le 25/04/2018 à 16h25

  • mram

    mram Administrateur

    Bonjour, il faut toujours un ; à la fin d'une instruction.

    le 29/04/2018 à 03h18

  • armand1807

    armand1807

    j'ai réussi l’exercice car j'ai trouver la réponse dans les com sinon j'ai rien pigé....

    le 04/08/2017 à 11h18

  • mram

    mram Administrateur

    Bonjour, qu'est ce que vous n'avez pas compris ?

    le 05/08/2017 à 11h09

  • raph.sil

    raph.sil

    Honnêtement, j'ai un peu l'impression de passer du coq à l'âne dans les leçons, qui ont du coup tendance à induire en erreur. On passe trop rapidement d'une fonction à une autre, sans forcément comprendre pourquoi on réussit ou pas...

    le 20/10/2017 à 18h55

  • mram

    mram Administrateur

    Bonjour, le but des exercices de cette catégories est d'avoir un aperçu de ce qu'il est possible de faire avec Javascript. Donc chaque exercice est indépendant. Le but n'est pas de tout comprendre parfaitement ici. Après si vous ne comprenez pas où vous bloquez ou pourquoi vous avez réussi, précisez quelle partie exactement et on pourra vous donner des explications supplémentaires.

    le 25/10/2017 à 14h56

  • arnaud.rouzier-25

    arnaud.rouzier-25

    bonjour , var result = Math.floor(Math.random()*10+1); Erreur(s) : En paramètre de Math.floor vous devez multiplier Math.random par un nombre.

    le 15/12/2018 à 21h59

  • meriam

    meriam Administrateur

    pour avoir un intervalle de 0 à 10, il faudra multiplier ce que donne Math.random() par 10 (n'ajoutez pas +1)

    le 15/12/2018 à 22h19

  • mickaelmangaud

    mickaelmangaud

    var result = Math.round((Math.random() * 10) + 1); ne fonctionne pas non plus

    le 28/09/2017 à 16h59

  • mram

    mram Administrateur

    Bonjour, votre code est correct. Enlevez les espaces autour des signes * et + , ça devrait passer.

    le 29/09/2017 à 02h55

  • titoff85-13

    titoff85-13

    L'analyseur de réponse est assez idiot : var result = Math.floor(Math.random()*10+1); fonctionne alors que var result = Math.floor(1+10*Math.random()); ne fonctionne pas , de plus je vois dans les commentaires que si on met des parenthèses (mêmes si elles sont inutiles) celà ne valide pas non plus la réponse, c'est quand même dommage

    le 31/08/2018 à 14h20

  • aboumouhammed782008-33

    aboumouhammed782008-33

    essayez ca ca marchera peut etre var result = Math.floor(Math.random()*10+1);

    le 04/11/2018 à 23h01

  • bouakkaz.f-7

    bouakkaz.f-7

    ça peut vous aider: var result=Math.floor(Math.random()*10)

    le 25/05/2019 à 12h32

  • antoine.rouchon-11

    antoine.rouchon-11

    Merci beaucoup !

    le 15/04/2019 à 14h13

index.html
script.js
<!DOCTYPE HTML> <html> <head> <title>Générer un nombre aléatoire</title> <script src="script.js"></script> </head> <body> </body> </html>