11525 sujets

JavaScript, DOM et API Web HTML5

Pages :
Bonjour

J'aimerais savoir comment donner à une variable un nombre aléatoire compris entre 0 et 50 inclus.

J'ai regardé un peu et j'ai trouvé cette fonction :

variable = Math.floor(Math.random())


mais comment faire pour donner une valeur entre 0 et 50 ?

Merci :d
Modifié par donfino (07 Jan 2007 - 19:07)
Math.random() renvoi un nombre "aléatoire" entre 0 et 1 donc tu multiplies par 50 et c'est bon ...

Si tu veux un nombre entier utilise Math.round() sur ce résultat ...

Tu aurais pu trouver çà tout seul sur le web ...
Modifié par CNeo (07 Jan 2007 - 18:44)
Bonsoir
Multiplier par 50 ne suffit pas car random() tire un nombre compris entre 0 et 1 NON inclus. Il faut donc aller jusqu'à 51
huummm ..

Merci à vous ... Ca fonctionne

J'ai just ajouté un math.ceil car il me faut pas de virgules
Modifié par donfino (07 Jan 2007 - 18:53)
donfino a écrit :
huummm ..

Merci à vous ... Ca fonctionne

J'ai just ajouté un math.ceil car il me faut pas de virgules

Pourquoi souhaites-tu avoir le nombre entier immédiatement supérieur et non l'arrondi ?
ça dépend du résultat voulu. floor() permet d'obtenir l'entier inférieur le plus proche, ceil() l'entier supérieur, et round() est un condensé des deux puisqu'il prend l'entier le plus proche (supérieur ou inféieur)
Bonjour,
CNeo a écrit :
Math.random() renvoi un nombre "aléatoire" entre 0 et 1 donc tu multiplies par 50 et c'est bon ...

Si tu veux un nombre entier utilise Math.round() sur ce résultat ...

Tu aurais pu trouver çà tout seul sur le web ...
Attention à ne pas dire n'importe quoi... C'est une très mauvaise idée d'utiliser l'arrondi de cette façon.

En effet, "Math.random() * 50" est une fonction aléatoire dont la répartition est uniforme entre 0 et 50. Si tu appliques Math.round à ce résultat, les deux points extrêmes (0 et 50) auront moins de chances d'être tirés que les autres. L'intervalle qui leur correspondra sera de 0.5 contre 1 pour les autres.

Pour tirer un nombre aléatoire entre 0 et 50, il faut écrire par exemple :
var nb = Math.floor(Math.random() * 51);
ou
var nb = Math.round(Math.random() * 51 - 0.5);
Mais la première solution devrait être plus rapide.
Modifié par Eldebaran (08 Jan 2007 - 12:36)
En effet ça paraît mieux désolé ...

Peut-être qu'une fonction permettant de tirer un nombre aléatoire devrait être ajoutée aux scripts utiles ...
Modifié par Changaco (02 Dec 2007 - 10:13)
Modérateur
Salut,

CNeo a écrit :
Peut-être qu'une fonction permettant de tirer un nombre aléatoire devrait être ajoutée aux scripts utiles ...

Pourquoi pas oui... Smiley smile

mmh... Je déclare tous ceux qui ont un tuto JS (sur Alsa) à leur actif hors jeu et on ne prend que le meilleur script... Smiley langue

A vous de jouer... Smiley murf

PS : interdiction de copier sur le voisin ou de lui tirer les cheveux

Indices :

- De combien à combien ?
- Pourquoi un nombre ?
Modifié par koala64 (08 Jan 2007 - 20:57)
Je prends plus le risque de poster Smiley biggol je propose aux autres de le faire, à mon avis ça va mieux fonctionner comme ça ... Smiley smile

Edit : @koala64 Pour le message perso je vais te répondre c'est juste que l'école ça me pompe beaucoup de temps ...
Modifié par Changaco (02 Dec 2007 - 10:14)
Modérateur
Bah non ! Smiley biggol

Justement... vas-y donc parce que d'autres peuvent en faire la critique par la suite... et puis s'il y a mieux, ce n'est pas grave, ça te permettra de voir comment tu aurais pu améliorer ton script ainsi que repérer quelles seraient tes erreurs... (s'il y en a)

Par contre, pour le moment, on poste ici... Smiley cligne
Ça me va, ça me laisse tout le week-end ... Smiley cligne Par contre dimanche à minuit je serai couché ...
Modifié par Changaco (02 Dec 2007 - 10:14)
koala64 a écrit :
mmh... Je déclare tous ceux qui ont un tuto JS (sur Alsa) à leur actif hors jeu et on ne prend que le meilleur script... Smiley langue
Mouarf. Smiley smile
Pages :