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

avec Java Discussion :

Génerer tous les entiers d'une borne !


Sujet :

avec Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2011
    Messages : 19
    Points : 15
    Points
    15
    Par défaut Génerer tous les entiers d'une borne !
    salut je voudrais savoir comment faire pour générer tous les entiers d'une borne. Avec mon exemple de 13 à 91253.

    j'ai essayer avec :
    int n = (Math.random()* 91252 + 13);

    mais sa ne génère qu'un entier au hasard.
    Pouvez-vous m'aider ?!

  2. #2
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    Tu crées une structure pour stocker tes entiers (List ou Set par exemple), puis tu fais un parcours basique pour générer les entiers entre tes deux bornes.

    Dans ton cas, ce sera :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    List<Integer> listEntier = new ArrayList<Integer>();
     
    for (int i = 13 ; i < 91252 ; ++i)
    	listEntier.add(i);
    Concernant Math.random, c'est tout à fait normal que cela te renvoi un nombre aléatoire, c'est le but de cette méthode, cf javadoc.
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  3. #3
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    ceci sera quand même plus performant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    List<Integer> listEntier = new ArrayList<Integer>(91252-13);
     
    for (int i = 13 ; i < 91252 ; ++i)
    	listEntier.add(i);
    voir carément:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    int[] listEntier = new int[91252-13];
     
    for (int i = 13 ; i < 91252 ; ++i)
    	listEntier[i-13] =i;
    qui occupera bien moins de mémoire

  4. #4
    Membre averti

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2010
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2010
    Messages : 246
    Points : 402
    Points
    402
    Par défaut
    Intéressant...

    Pourrais-tu expliquer pourquoi la déclaration du champ de valeur dans l'ArrayList rend le traitement aval plus performant ?

    Donc dans ce cas précis, pourquoi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List<Integer> listEntier = new ArrayList<Integer>(91252-13);
    est mieux que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List<Integer> listEntier = new ArrayList<Integer>();
    ?
    C'est en aidant les autres qu'on en apprend beaucoup soi-même

  5. #5
    Membre chevronné
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Points : 2 011
    Points
    2 011
    Par défaut
    Citation Envoyé par michon Voir le message
    Intéressant...

    Pourrais-tu expliquer pourquoi la déclaration du champ de valeur dans l'ArrayList rend le traitement aval plus performant ?

    Donc dans ce cas précis, pourquoi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List<Integer> listEntier = new ArrayList<Integer>(91252-13);
    est mieux que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List<Integer> listEntier = new ArrayList<Integer>();
    ?
    L'arraylist est une structure de donnée à taille dynamique basée sur un tableau.

    Sachant qu'un tableau à une taille définie, quand l'arraylist arrive aux limites de taille du tableau sous jacent, elle créé un nouveau tableau plus grand et y copie ses valeurs stockées.

    En passant un int en paramètre du constructeur de l'arraylist, on spécifie directement la taille du talbeau sous jacent, ainsi on épargne le cout des plusieurs redimensionnement successifs.

    C'est une excellente pratique que de spécifier une taille initiale en construisant l'arraylist en rapport avec la capacité dont on a besoin.

    -"Tout ça me paraît très mal organisé. Je veux déposer une réclamation. Je paye mes impôts, après tout!"
    -"JE SUIS LA MORT, PAS LES IMPÔTS! MOI, JE N'ARRIVE QU'UNE FOIS".

    Pieds d'argile (1996), Terry Pratchett 1948 - 2015
    (trad. Patrick Couton)

  6. #6
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    Merci des infos vous deux
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2011
    Messages : 19
    Points : 15
    Points
    15
    Par défaut
    Merci bien

  8. #8
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    plus précisément, arraylist commence par défaut avec une taille de 10 et utilise la formule d'agrandissement (tailleActuelle *3) /2+1.
    Pour arriver à la taille requise, on se tappe donc la séquence suivante

    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
    10
    16
    25
    38
    58
    88
    133
    200
    301
    452
    679
    1019
    1529
    2294
    3442
    5164
    7747
    11621
    17432
    26149
    39224
    58837
    88256
    132385
    Soit 23 redimensionnements pour une quantité totale de données transférées de 264714 élément, soit 2M de données qui se baladent de gauche à droite si on suppose qu'une référence java utilise un pointeur 64 bits en interne.

    De plus, 41146 entrées du tableau restent vide, ce qui, sur le meme calcul, donne ~300K de mémoire gaspillée

  9. #9
    Membre averti

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2010
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2010
    Messages : 246
    Points : 402
    Points
    402
    Par défaut
    bonne analyse, je te remercie !
    C'est en aidant les autres qu'on en apprend beaucoup soi-même

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

Discussions similaires

  1. afficher tous les champs d'une table
    Par julio84 dans le forum ASP
    Réponses: 8
    Dernier message: 19/01/2005, 10h31
  2. Sélectionner tous les entiers dans une fourchette
    Par ludo.guy dans le forum Langage SQL
    Réponses: 5
    Dernier message: 16/07/2004, 09h15
  3. Retrouver tous les champs d'une table
    Par tripper.dim dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 11/07/2004, 20h40
  4. Afficher tous les champs d'une table avec dbexpress et MySQL
    Par LHT dans le forum Bases de données
    Réponses: 2
    Dernier message: 25/06/2004, 17h11
  5. Envoie d'un message a TOUS les composant d'une form
    Par chddv dans le forum Composants VCL
    Réponses: 7
    Dernier message: 15/09/2003, 09h47

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