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

Collection et Stream Java Discussion :

utilisation de random pour remplir mon tableau avec une certaine probabilité


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2008
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2008
    Messages : 69
    Par défaut utilisation de random pour remplir mon tableau avec une certaine probabilité
    Bonjour;

    Je souhaite remplir mon tableau de façons aléatoire avec un ensembles des valeurs allant de 1 à 9 et un autre ensemble allant de 10 à 99.
    J'ai une probabilité de 0.7 pour que les chiffres choisis soient de 1 à 9 sinon de 10 à 99.

    J'ai fais mon tableau mais mon problème et que j'ai du mal à savoir comment intégrer c'est 0.7 pour que les nombres choisis soit de 1 à 9 ou de 0.3 pour les nombres choisis soient de 10 à 99.

    Après plusieurs recherches sur le net j'ai réaliser le random pour remplir le tableau des 10 à 99, mais je n'ai pas pu aller loin j'ai besoin de vos idées pour pouvoir intégrer cette probabilité.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
     
    package Revision;
     
    import java.util.Arrays;
     
    public class random {
     
     
     
     
    	static int tab[] = new int[alea(3, 6+1)];
     
     
     
     
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
     
    		for(int i= 0; i<tab.length; i++){
    			tab[i] = alea(10, 99+1);
    		}
     
    		System.out.println("tab : "+Arrays.toString(tab));
     
    		}
     
     
    	public static int alea(int Min, int Max)
    	{
    	     return (int) (Math.random()*(Max-Min))+Min;
    	}
     
     
    }

  2. #2
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2014
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2014
    Messages : 176
    Par défaut
    J'ai une petite idée, pourquoi ne pas, par exemple, remplir ton tableau de N elements de cette maniere:
    pour les elements 0 à (N*0.7) - 1 avec des random entre 1 et 9, ainsi 70% du tableau avec les chiffre
    puis pour les element N*0.7 à N-1 (fin du tableau), avec des random entre 10 et 99 soit 30% restant
    puis si besoin, mélanger ton tableau

    code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    public class Test1 { 
     
    		static int tab[] = new int[10];
     
    		public static void main(String[] args) {
     
    				for(int j = 0; j<  tab.length ; j++ )
    				{
    					if(j<(int) tab.length*0.7)
    					{
    						//on remplit des random entre 1 et 9 pour les premiers 70% du tableau
    						int a = (int) (Math.random()*8+1);
    						tab[j] = a;
    					}
    					else
    					{//on remplit de random entre 10 et 99 pour les 30 % restant
    						int b = (int) (Math.random()*89 + 10);
    					tab[j] = b;
    					}				
    				}
     
    			        // On affiche
    				System.out.println("tab : "+Arrays.toString(tab));
     
    				//Facultatif, on melange le tableau
    		                melange(tab);
    		               //On re-affiche
    		              System.out.println("tab : "+Arrays.toString(tab));			
    		}		
     
    		public static void melange(int[] t){
    			Random rgen = new Random();  // on cree un objet aleatoire			
     
    			for (int i=0; i<t.length; i++) {
    				//On cible un index aleatoirement du tableau
    			    int randomPosition = rgen.nextInt(t.length);
    			    //On echange deux valeur du tableau
    			    int temp = t[i];
    			    t[i] = t[randomPosition];
    			    t[randomPosition] = temp;
    			}
    	 	}
    }
    }

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2008
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2008
    Messages : 69
    Par défaut
    Merci abysr;

    Mais je pense qu' il faut juste intégrer une condition dans la boucle for avec une génération aléatoire de la probabilité
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
                       double probabilite = alea(10, 99+1)/100.0;
                     /*Pour avoir le pourcentage de façon aléatoire s'il est supérieur à 0.3, la table est remplie
                   //avec les chiffres de  1 à 9 sinon elle est remplie avec les nombres de 10 à 99.*/
     
     
     
    		for(int i= 0; i<tab.length; i++){
     
    			if(probabilite >0.3){
     
    			tab[i] = alea(1, 9+1);
     
    			}else {
     
    				tab[i] = alea(10, 99+1);
    			}
    		}
     
    //Methode de random
    public static int alea(int Min, int Max)
    	{
    	     return (int) (Math.random()*(Max-Min))+Min;
    	}

  4. #4
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 2
    Par défaut
    Bonjour,

    Le plus propre, selon moi, c'est de créer une méthode qui renvoie un nombre aléatoire avec les règles que tu as fixées.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public static int genererAlea() {
        // ici, ton code
    }
    Dans la méthode, tu dois
    1. Tirer un nombre aléatoire entre 0 et 9 (inclus)
    2. Si ce nombre est < 7, tu retournes un nombre aléatoire entre 1 et 9
    3. Sinon, tu retournes un nombre aléatoire entre 10 et 99


    Ensuite, tu utilises cette méthode pour remplir chaque case du tableau.

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2008
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2008
    Messages : 69
    Par défaut
    Citation Envoyé par brubru777 Voir le message
    Bonjour,

    Le plus propre, selon moi, c'est de créer une méthode qui renvoie un nombre aléatoire avec les règles que tu as fixées.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public static int genererAlea() {
        // ici, ton code
    }
    Dans la méthode, tu dois
    1. Tirer un nombre aléatoire entre 0 et 9 (inclus)
    2. Si ce nombre est < 7, tu retournes un nombre aléatoire entre 1 et 9
    3. Sinon, tu retournes un nombre aléatoire entre 10 et 99


    Ensuite, tu utilises cette méthode pour remplir chaque case du tableau.
    Merci, oui c'est comme ça que je l'ai fais et ça marche finalement.

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

Discussions similaires

  1. Remplir un tableau avec une image
    Par happyboon dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 16/10/2012, 13h48
  2. Réponses: 1
    Dernier message: 13/04/2011, 09h44
  3. Remplir mon arrayList avec une boucle for?
    Par kolann dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 10/11/2010, 12h04
  4. Remplir un tableau avec une string,
    Par juanito7 dans le forum Windows Forms
    Réponses: 0
    Dernier message: 26/10/2010, 08h19
  5. [MySQL] Remplir un tableau avec une requête
    Par comme de bien entendu dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 12/06/2007, 11h27

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