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 ?!
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 ?!
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 :
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.
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);
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
ceci sera quand même plus performant
voir carément:
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);
qui occupera bien moins de mémoire
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;
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 :
est mieux que :
Code : Sélectionner tout - Visualiser dans une fenêtre à part List<Integer> listEntier = new ArrayList<Integer>(91252-13);
?
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
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)
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
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
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.
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
De plus, 41146 entrées du tableau restent vide, ce qui, sur le meme calcul, donne ~300K de mémoire gaspillée
bonne analyse, je te remercie !
C'est en aidant les autres qu'on en apprend beaucoup soi-même
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager