IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

random de Math


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 83
    Par défaut random de Math
    Bonjour !

    Je croyais connaître la réponse à cette question :
    La méthode Math.random() permet de générer un nombre pris au hasard entre 0 et 1.
    Cet intervalle est fermé à 0 et ouvert à 1. Vrai ou faux ?
    Mais apprement, un programme que j' ai créé a tendance à me prouver le contraire. Qu' en pensez-vous ?


    Merci d' avance pour votre réponde.

  2. #2
    Membre Expert
    Avatar de Manumation
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    1 153
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 153
    Par défaut
    Bonjour,

    Je sais pas si ça peux t'aider, mais lorsque je faisait du java, par exemple pour un nombre tiré au hasard entre 1 et 10, j'écrivais :

    i = (int) (10*Math.random()+1);

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 116
    Par défaut
    Bonjour, en direct de la javadoc.

    Returns a double value with a positive sign, greater than or equal to 0.0 and less than 1.0. Returned values are chosen pseudorandomly with (approximately) uniform distribution from that range.

    Si vous avez un probleme avec votre code. Poster le

  4. #4
    Membre chevronné Avatar de Rayndell
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    289
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 289
    Par défaut
    Si ta fonction random() produit des trucs bizarres, c'est pas normal. As-tu des bouts de codes et des traces d'exécution ?

  5. #5
    Inactif
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 83
    Par défaut
    Citation Envoyé par openWorld
    Bonjour, en direct de la javadoc.

    Returns a double value with a positive sign, greater than or equal to 0.0 and less than 1.0. Returned values are chosen pseudorandomly with (approximately) uniform distribution from that range.

    Si vous avez un probleme avec votre code. Poster le
    Okay !

    >= 0 et < 1 . C' est bien ce que je pensais.

    Maintenant, comment faire pour générer des nombres entiers entre - 11 et + 11 ?

    Pas aussi facile que ça en a l' air.

  6. #6
    Membre très actif
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    321
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 321
    Par défaut
    de -11 à 11 tu as 23 valeur possible tu vas donc avoir du
    ensuite tu veux pas commencer à 0 mais à -11 donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int nb = (int)(23*Math.random()) - 11;
    rien de compliqué

  7. #7
    Inactif
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 83
    Par défaut
    Citation Envoyé par leyee
    de -11 à 11 tu as 23 valeur possible tu vas donc avoir du
    ensuite tu veux pas commencer à 0 mais à -11 donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int nb = (int)(23*Math.random()) - 11;
    rien de compliqué
    Vous n' allez pas le croire, ce code ne fournit jamais le nombre - 11. J' ai essayé 62 fois déjà.

    Et vous, essayez un peu et dites moi si le nombre - 11 apparaît.

  8. #8
    Membre émérite Avatar de remika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    806
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 806
    Par défaut
    Et avec ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int nb = (int)(23*Math.random() - 11.5);
    ?

  9. #9
    Membre chevronné

    Profil pro
    Inscrit en
    Mars 2007
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 392
    Par défaut
    Citation Envoyé par raph707
    Vous n' allez pas le croire, ce code ne fournit jamais le nombre - 11. J' ai essayé 62 fois déjà.

    Et vous, essayez un peu et dites moi si le nombre - 11 apparaît.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public class T {
    	public static void main(String[] args) {
    		for (int i = 0; i <= 50; i++) {
    			int nb = (int) (23 * Math.random()) - 11;
    			if (nb == -11) {
    				System.out.println(i + ":" + nb);
    			}
    		}
    	}
    }
    résultat :
    31:-11
    45:-11

    donc, j'obtiens bien -11.

    EDIT :
    Tu peux tester avec ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public static void main(String[] args) {
    		int nb = 0;
    		int i = 0;
    		while (nb != -11 || i >= 1000) {
    			nb = (int) (23 * Math.random()) - 11;
    			i++;
    		}
    		System.out.println(i + ":" + nb);
    	}
    et modifier la valeur max de i.... si ça ne marche tjs pas.

  10. #10
    Inactif
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 83
    Par défaut
    Citation Envoyé par raph707
    Okay !

    >= 0 et < 1 . C' est bien ce que je pensais.

    Maintenant, comment faire pour générer des nombres entiers entre - 11 et + 11 ?

    Pas aussi facile que ça en a l' air.
    Finalement si ! c' est aussi facile que ça a en l' air. C' est moi qui ai mal codé. Finalement c' est mon code qui clochait.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Math / Random] Génération nombre aléatoire compris entre deux bornes
    Par oligig dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 30/06/2013, 17h23
  2. Réponses: 12
    Dernier message: 25/05/2007, 16h28
  3. [Math.Random] StackOverFLowError Exception
    Par michaeljeru dans le forum Langage
    Réponses: 3
    Dernier message: 27/03/2007, 22h39
  4. [FLASH MX2004] Tirage (Math.random) et égalité stricte
    Par cristolb dans le forum ActionScript 1 & ActionScript 2
    Réponses: 8
    Dernier message: 28/04/2006, 11h02
  5. [Math]Random le mystère
    Par HemPaX dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 19/12/2005, 20h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo