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] problème simple


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Avatar de yolepro
    Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mai 2002
    Messages : 918
    Par défaut [Random] problème simple
    Bonjour,

    J'avoue ne pas être très pro dans tout ce qui concerne les règles de gestions contenant des probabilités alors je vous pose un problème simple que je n'arrive pas a résoudre.

    je dois trouver deux chiffre a et b de manière aléatoire. Ils doivent répondre a ces trois critères :
    0 <= a <=1
    0 <= b <=1
    a + b <=1

    Je sais comment trouver un chiffre aléatoire entre 0 et 1 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Random generateur = new Random(new Date().getTime());
    double a = 0.0;
    double b = 0.0;
     
    a = generateur.nextDouble();
    b = // La je ne sais pas comment dire generateur.nextDouble(compris entre 0 et a);
    Si quelqu'un connait la solution, je suis preneur.


  2. #2
    Membre éprouvé Avatar de nicgando
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 128
    Par défaut
    Et si tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ...
    double a = Math.random() / 2.0; //0<= a <=0.5
    double b = Math.random() / 2.0; //0<= b <=0.5
    double c = a + b; //0<= c <=1
    ...

  3. #3
    Membre émérite
    Avatar de yolepro
    Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mai 2002
    Messages : 918
    Par défaut
    Citation Envoyé par nicgando
    Et si tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ...
    double a = Math.random() / 2.0; //0<= a <=0.5
    double b = Math.random() / 2.0; //0<= b <=0.5
    double c = a + b; //0<= c <=1
    ...
    Merci nicgando pour ta réponse,

    Mais ca ne réponds pas vraiment a ma question.

    Dans mon cas, a ou b peuvent très bien etre supérieur a 0.5.

  4. #4
    Membre éclairé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 572
    Par défaut
    ben tu fais une boucle:

    faire
    a <- random
    b <- random
    tant que a + b > 1

  5. #5
    Membre éprouvé Avatar de nicgando
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 128
    Par défaut
    Deuxième essai

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    double a = Math.random() ; //0<= a <=1
    double b = Math.random(); // 0<= b <=1
    double c = (a + b) / 2.0;   //  0<= c <=1

  6. #6
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Tu peux simplement diminuer la valeur de b s'il est trop grand :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            Random generateur = new Random();
            double a = generateur.nextDouble();
            double b = generateur.nextDouble();
            if (a+b>1.) {
                b = 1. - a;
            }
    a++

  7. #7
    Membre confirmé
    Avatar de jolatouf
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    170
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 170
    Par défaut
    Salut,

    sinon tu peux faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    double a = Math.random() ; //0<= a <=1
    double b = Math.random(); // 0<= b <=1
     
    while(b> 1-a)
    {
    b = Math.random(); // 0<= b <=1
    }
     
    ce qui nous fait 0<=  a <=1
                          0<=  b <=1-a
     
    a+b<=1
    et tu peux meme mettre un test aleatoire pour savoir si tu calcul B par rapport a A ou A par rapport a B comme ca A et B peuvent etre tres pres de 1 chacun leur tour

  8. #8
    Membre éclairé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 572
    Par défaut
    Citation Envoyé par jolatouf
    et tu peux meme mettre un test aleatoire pour savoir si tu calcul B par rapport a A ou A par rapport a B comme ca A et B peuvent etre tres pres de 1 chacun leur tour
    oui donc on en revient a ce que je disais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    double a;
    double b;
     
    do
    {
      a = Math.random();
      b = Math.random();
    }
    while (a + b > 1);
    ça sortira de la boucle si a + b <= 1

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

Discussions similaires

  1. ReentrantLock dans un problème simple
    Par FidoDido® dans le forum Langage
    Réponses: 8
    Dernier message: 06/01/2007, 16h42
  2. Problème simple de carte réseau
    Par Bayard dans le forum Matériel
    Réponses: 1
    Dernier message: 25/09/2006, 16h29
  3. Problème simple avec des checkbox
    Par nanor21 dans le forum Langage
    Réponses: 2
    Dernier message: 07/05/2006, 00h26
  4. [Javadoc]La Javadoc et un problème... simple mais paralysant
    Par lionrouge dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 09/12/2005, 00h00
  5. Problème simple d'apostrophe qui m'ennerve !
    Par beletteroi dans le forum Requêtes
    Réponses: 1
    Dernier message: 10/09/2005, 21h58

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