Partage
  • Partager sur Facebook
  • Partager sur Twitter

Nombre aleatoire

    20 octobre 2010 à 18:35:49

    Bonsoir,

    J'aimerai savoir comment obtenir un nombre aléatoire dans une fonction.

    (je supose que c'est rand(), mais si c'est ça, je ne sais pas l'utiliser...)
    • Partager sur Facebook
    • Partager sur Twitter
      20 octobre 2010 à 18:40:14

      double nbRand = Math.random();
      Tu obtiendras un nombre entre 0 et 1.

      Après si tu veux un int il te suffit de caster et si tu veux un intervalle plus grand, de multiplier le nombre obtenu.
      • Partager sur Facebook
      • Partager sur Twitter
        20 octobre 2010 à 18:42:14

        salut,
        Random rand = new Random();
        rand.nextInt(MaxValue);
        


        Et un conseil fait un peu des recherches car se genre de truc tu le trouve tres facilement!
        Et surtout regarde la javadoc elle est très bien faite!
        • Partager sur Facebook
        • Partager sur Twitter
          20 octobre 2010 à 18:47:46

          Bonsoir,
          il existe une classe appelée math dont il y a une fonction random qui sert à générer un nombre aléatoire entre [0,1[
          cette fonction retourne un résultat de type double
          voila la syntaxe :
          double nbr_aleatoire=Math.random();
          

          autre méthode pour obtenir un nombre entre 1 et 10 :
          int nbr_aleatoire=(int)((Math.random*10)+1);
          

          bonne chance .
          • Partager sur Facebook
          • Partager sur Twitter
            20 octobre 2010 à 18:53:10

            Mais on peut pas faire un aleatoire entre 15 et 46 par exemple ?
            • Partager sur Facebook
            • Partager sur Twitter
              20 octobre 2010 à 19:10:00

              c'est aussi facile
              int nbr_aleatoire=(int)((Math.random*31)+15);
              
              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                20 octobre 2010 à 19:22:37

                @eayoub :

                Pourquoi générer un nombre aléatoire en double pour ensuite le caster pour le sauvgarder en int.
                Y'a comme un non-sens entre ce que tu veux faire et ce que tu fais :(

                Le mieux c'est comme Ligarnes le dit on utilise un objet Random avec sa méthode nextInt.

                son utilisation est simple :
                //r est un objet de type Random
                int nombreAleatoire = valeurMinDeLaPlage + r.nextInt(valeurMaxDeLaPlage - valeurMinDeLaPlage);
                

                • Partager sur Facebook
                • Partager sur Twitter
                  20 octobre 2010 à 19:31:45

                  Ah Monsieur tu as raison :)
                  je n'ai pas fait attention
                  mais comme même la mienne reste une solution :)
                  je la trouve assez lisible que celle de Ligarnes mais celle est plus optimisée.
                  Cordialement :)
                  • Partager sur Facebook
                  • Partager sur Twitter
                    20 octobre 2010 à 22:26:55

                    Citation : eayoub

                    mais comme même la mienne reste une solution


                    Ce genre de solution porte un nom : "réinventer la roue carrée".
                    Non seulement tu réinventes quelque chose qui existe déjà, mais en plus tu le fais d'une manière sous-optimisée. Pourquoi ?
                    Explication :
                    package java.lang;
                    import java.util.Random;
                    
                    private static Random randomNumberGenerator;
                    
                    private static synchronized void initRNG() {
                        if (randomNumberGenerator == null) 
                            randomNumberGenerator = new Random();
                    }
                    
                    public static double random() {
                        if (randomNumberGenerator == null) initRNG();
                        return randomNumberGenerator.nextDouble();
                    }
                    

                    Ah ben oui.
                    En plus les calculs sur les Double c'est tout sauf performant.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      20 octobre 2010 à 23:26:48

                      Merci @Spacefox pour cette clarification :)
                      • Partager sur Facebook
                      • Partager sur Twitter
                        20 octobre 2010 à 23:34:14

                        Pas de quoi.
                        Jeter un oeil dans les sources de Java pour comprendre comment marchent certains trucs peut être très instructif.
                        • Partager sur Facebook
                        • Partager sur Twitter

                        Nombre aleatoire

                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                        • Editeur
                        • Markdown