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

Affichage des résultats du sondage: Quel est le meilleur moyen pour génerer un tableau de valeur aléatoire à partir d'ensemble donné san

Votants
0. Vous ne pouvez pas participer à ce sondage.
  • Exemple à partir de ce tableau [1,2,3,4,5,6]

    0 0%
  • On génerer celui la [2,1,4,3,6,5]

    0 0%
Collection et Stream Java Discussion :

Avoir un tableau de nombres aléatoires pour le PVC


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Ingénieur d'études et développement JAVA
    Inscrit en
    Mai 2008
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur d'études et développement JAVA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 202
    Par défaut Avoir un tableau de nombres aléatoires pour le PVC
    Bonjour,

    J'ai besoin de votre aide.
    Je travail sur le probléme du voyageur du commerce -- PVC.
    Pour le moment je dois géner aleatoirement une solution (c a d d'un chemin ) et afficher de son coût.
    La solution qui m'ai venu à l'esprit c'est de créer deux tableaux, le 1er contient des élements successive, par exemple le tableau du départ [1,2,3,4,5,6] qui représent un chemin d'un certain coût, étant donné que l'élement 1-->représente la ville 1, ainsi de suite .

    Le deuxiéme tableau dois contient d'autre chemin possible avec les mêmes villes, qui sont génerer d'une manière aléatoire.
    par exemple tableau d'arrivé après l'appele à la méthode aléatoire [3,2,1,6,5,4].
    Voila la signature de ma méthode.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public static Chemin aleatoire(int n) {
    		int[] t = new int[n];
    		int[] tab = new int[n];
    		for (int i = 0; i < n; i++) {
    			t[i] = (i + 1);
    // la je dois remplire le tableau tab avec des valeurs aléatoires comme dans l'exemple.
     
    	return new Chemin(tab, chemin(tab, matr));
    		}
    Qu'est ce que je dois faire pour avoir ce tableau avec les mêmes villes, mais d'une manière aléatoire.
    Merci d'avance.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Ensimag
    Inscrit en
    Octobre 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ensimag
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 57
    Par défaut
    Bonjour,
    je ne comprends pas très bien , je ne sais si tu veux savoir comment générer des arcs aleatoires entre tes villes ou autre chose, car le problème du voyageur reste assez complexe, une meilleure solution soit les solvers ou un langage fonctionnel comme prolog par exemple !

  3. #3
    Membre éclairé
    Profil pro
    Ingénieur d'études et développement JAVA
    Inscrit en
    Mai 2008
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur d'études et développement JAVA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 202
    Par défaut
    Je veux uniquement savoir comment remplir le tableau avec les éléments que j'ai d'une manière aléatoire.
    Pour l'implémentation c'est en langage Java.
    Je sais que je dois utiliser Math.Random(), mais je ne sais pas comment, car le tableau ne dois contenir que les éléments du tableau du départ.

  4. #4
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 209
    Billets dans le blog
    52
    Par défaut
    Je te conseil la méthode sort avec un "Comparator" aléatoire.

    Je te propose une implémentation :
    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
    import java.util.Arrays;
    import java.util.Comparator;
    import java.util.Random;
     
    public class Test implements  Comparator<Integer> {
    	private int baseSeed;
     
    	public Test(int baseSeed) {
    		this.baseSeed = baseSeed;
    	}
     
    	/**
             * @param args
             */
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Test test = new Test(4451);
    		Integer[] myArray = new Integer[1000];
    		for (int i = 0; i < myArray.length; i++) {
    			myArray[i] = new Integer(i);
    		}
    		Arrays.sort(myArray, test);
    		for (Integer integer : myArray) {
    			System.out.print(":"+integer);
    		}
     
    	}
     
    	@Override
    	public int compare(Integer arg0, Integer arg1) {
    		Random rand = new Random(baseSeed+arg0.intValue()+arg1.intValue());
    		int toReturn = rand.nextInt(3)-1;
    		return toReturn;
    	}
     
    }
    C'est du pseudo-aléatoire, tout est déterminé par la clé que tu donne au début.
    Si un puriste passe dans le coin, il te dira que ce n'est pas géniale comme procédé. Mais cela fait son office.

    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  5. #5
    Membre éclairé
    Profil pro
    Ingénieur d'études et développement JAVA
    Inscrit en
    Mai 2008
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur d'études et développement JAVA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 202
    Par défaut
    Merci pour votre conseil.
    Mais je préfère ma méthode, sauf que je ne sais pas comment y arrivé.

  6. #6
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 209
    Billets dans le blog
    52
    Par défaut
    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
    /**
             * @param args
             */
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		int[] test = new int[10];
    		Random randomer = new Random();
    		for (int i = 0; i < test.length; i++) {
    			int value = 1+randomer.nextInt(10);
    			while (tableContains(test, value)) {
     
    				value = 1+randomer.nextInt(10);
    			}
    			test[i]= value;
    		}
    		for (int i = 0; i < test.length; i++) {
    			System.out.print(":"+test[i]);
    		}
    	}
     
    	private static boolean tableContains(int[] table, int value) {
    		for (int i = 0; i < table.length; i++) {
    			if(table[i]==value){
    				return true;
    			}
    		}
    		return false;
    	}
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

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

Discussions similaires

  1. [WD18] Nombre aléatoire pour code barre
    Par bigcat dans le forum WinDev
    Réponses: 15
    Dernier message: 30/06/2015, 19h24
  2. Tableau de nombres aléatoires distincts
    Par cabiste007 dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 11/04/2015, 09h05
  3. Réponses: 1
    Dernier message: 08/01/2013, 14h16
  4. Tableau et nombre aléatoire
    Par doudou0088 dans le forum Débuter
    Réponses: 15
    Dernier message: 05/06/2008, 13h44
  5. nombres aléatoires pour remplissage cryptographique
    Par Taka's tiger dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 27/05/2007, 08h47

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