Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1729 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Question sur les nombre aléatoires...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Question sur les nombre aléatoires...

n°564999
sdk
Posté le 12-11-2003 à 15:51:03  profilanswer
 

Bonjour,
 
j'ai besoin de généré un certain nombre de nombre entre 0 et n, mais je ne doit pas avoir deux fois le meme
 
comment faire ca ?
 
je pensait a une boucle de Math.random(), mais comment m'assurer que je n'ais pas deux fois le meme nombre ?
 
merci  :hello:

mood
Publicité
Posté le 12-11-2003 à 15:51:03  profilanswer
 

n°565000
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 12-11-2003 à 15:51:42  profilanswer
 

java.util.Random. Tu fais un nextInt à chaque fois.


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°565068
sdk
Posté le 12-11-2003 à 16:44:35  profilanswer
 

Taiche a écrit :

java.util.Random. Tu fais un nextInt à chaque fois.


 
heu je définit comment l'interval ? si je veu que des nombres entre 10000 et 20000 ou entre 0 et 50000

n°565070
uriel
blood pt.2
Posté le 12-11-2003 à 16:45:17  profilanswer
 

lis la javadoc


---------------
IVG en france
n°565074
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 12-11-2003 à 16:46:40  profilanswer
 

Sdk a écrit :


heu je définit comment l'interval ? si je veu que des nombres entre 10000 et 20000 ou entre 0 et 50000


La Javadoc dit :

Citation :

public int nextInt(int n)
 
    Returns a pseudorandom, uniformly distributed int value between 0 (inclusive) and the specified value (exclusive)


Donc pour un truc entre 0 et 50000, tu feras nextInt(50000) et pour un truc entre 10000 et 20000 bin tu feras nextInt(10000) et tu rajouteras 10000 [:spamafote]


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°565075
sdk
Posté le 12-11-2003 à 16:46:50  profilanswer
 

nextInt
public int nextInt(int n)Returns a pseudorandom, uniformly distributed int value between 0 (inclusive) and the specified value (exclusive), drawn from this random number generator's sequence. The general contract of nextInt is that one int value in the specified range is pseudorandomly generated and returned. All n possible int values are produced with (approximately) equal probability. The method nextInt(int n) is implemented by class Random as follows:  
 
 
je vai lire la doc :D
 
merci
 
 
edit : grillayd, merci  :jap:  :jap:


Message édité par sdk le 12-11-2003 à 16:47:18
n°565080
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 12-11-2003 à 16:47:39  profilanswer
 

uriel a écrit :

lis la javadoc  


:jap:


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°565082
chrisbk
-
Posté le 12-11-2003 à 16:49:06  profilanswer
 


perso je verrais bien un feature du forum forcant a repondre a un questionnaire : "avez vous fais une recherche google / forum /javadoc/msdn ?" :O

n°565083
uriel
blood pt.2
Posté le 12-11-2003 à 16:49:18  profilanswer
 


 
un peu rapide quand même parce que c'est vrai que cette classe pourrait avoir une methode avec un intervalle en argument  [:spamafote]


---------------
IVG en france
n°565090
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 12-11-2003 à 16:51:56  profilanswer
 

uriel a écrit :


un peu rapide quand même parce que c'est vrai que cette classe pourrait avoir une methode avec un intervalle en argument  [:spamafote]  


Ouais m'enfin bon, suffit de savoir faire une addition, c'est pas trop la mort :o


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
mood
Publicité
Posté le 12-11-2003 à 16:51:56  profilanswer
 

n°565103
benou
Posté le 12-11-2003 à 16:57:30  profilanswer
 

De toute façon, la classe Random elle est pas assez aléatoire : elle fait que des grands nombres.
 
c'est bien connu :o


---------------
ma vie, mon oeuvre - HomePlayer
n°565104
chrisbk
-
Posté le 12-11-2003 à 16:58:59  profilanswer
 

benou a écrit :

De toute façon, la classe Random elle est pas assez aléatoire  


 
Absolument elle est pseudo aleatoire [:aloy]
 
(ouais je sais que tout le monde le sait mais j'ai envie de faire mon viel fly fuckers du mercredi)

n°565118
sdk
Posté le 12-11-2003 à 17:13:46  profilanswer
 

( c bon ca marche nickel merci les gens )

n°565121
darklord
You're welcome
Posté le 12-11-2003 à 17:15:08  profilanswer
 

cai la faute à Taiche :o


---------------
Just because you feel good does not make you right
n°565124
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 12-11-2003 à 17:15:55  profilanswer
 

DarkLord a écrit :

cai la faute à Taiche :o


[:sisicaivrai]


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°565154
BifaceMcLe​OD
The HighGlandeur
Posté le 12-11-2003 à 18:15:10  profilanswer
 

Sdk a écrit :

Bonjour,
 
j'ai besoin de généré un certain nombre de nombre entre 0 et n, mais je ne doit pas avoir deux fois le meme
 
comment faire ca ?
 
je pensait a une boucle de Math.random(), mais comment m'assurer que je n'ais pas deux fois le meme nombre ?
 
merci  :hello:  


Vous avez remarqué que vous avez répondu à côté de la question ? (ou alors la question était mal formulée).
 
Parce que Random.nextInt() ne garantit en aucun cas que sur n tirages, on obtiendra des tirages tous différents. Un seul exemple, si tu fais 6 tirages aléatoires de nombres compris entre 1 et 6, tu es pratiquement sûr d'obtenir au moins un des nombres plusieurs fois...
 
Si tu veux une suite de nombres pseudo-aléatoires et, en même temps, la garantie de l'unicité de ces nombres, alors il faut utiliser une méthode différente : tirage de nombre aléatoires en les triant pour être sûrs qu'ils soient tous différents, puis un shuffle() sur la liste des nombres obtenus (voir la classe Arrays ou Collections, je ne sais plus).


Message édité par BifaceMcLeOD le 13-11-2003 à 11:56:37
n°565156
sdk
Posté le 12-11-2003 à 18:27:12  profilanswer
 

BifaceMcLeOD a écrit :


Vous remarquerez que vous avez répondu à côté de la question ? (ou alors la question était mal formulée).
 
Parce que Random.nextInt() ne garantit en aucun cas que sur n tirages, on obtiendra des tirages tous différents. Un seul exemple, si tu fais 6 tirages aléatoires de nombres compris entre 1 et 6, tu es pratiquement sûr d'obtenir au moins un des nombres plusieurs fois...
 
Si tu veux une suite de nombres pseudo-aléatoires et, en même temps, la garantie de l'unicité de ces nombres, alors il faut utiliser une méthode différente : tirage de nombre aléatoires en les triant pour être sûrs qu'ils soient tous différents, puis un shuffle() sur la liste des nombres obtenus (voir la classe Arrays ou Collections, je ne sais plus).


 
han moi je pensai ke ca le fesai tout seul snif
 
bah y ont tous mal lu alors :)

n°565165
benou
Posté le 12-11-2003 à 18:51:32  profilanswer
 

Sdk a écrit :


 
han moi je pensai ke ca le fesai tout seul snif
 
bah y ont tous mal lu alors :)


en effet.
 
bien vu BifaceMcLeOD :jap:


---------------
ma vie, mon oeuvre - HomePlayer
n°565357
darklord
You're welcome
Posté le 12-11-2003 à 22:16:52  profilanswer
 

:whistle:


---------------
Just because you feel good does not make you right
n°565520
the real m​oins moins
Posté le 13-11-2003 à 00:53:47  profilanswer
 

BifaceMcLeOD a écrit :

Un seul exemple, si tu fais 6 tirages aléatoires de nombres compris entre 1 et 6, tu es pratiquement sûr d'obtenir au moins un des nombres plusieurs fois...

faudra m'expliquer comment tu esperes obtenir 6 nombres differents entre 1 et 6 alors  [:atsuko]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°565522
chrisbk
-
Posté le 13-11-2003 à 00:54:46  profilanswer
 

the real moins moins a écrit :

faudra m'expliquer comment tu esperes obtenir 6 nombres differents entre 1 et 6 alors  [:atsuko]  


1 2 3 4 5 6 [:dawa]

n°565528
the real m​oins moins
Posté le 13-11-2003 à 00:59:00  profilanswer
 

oh putain [:psychokwak]
 
 
 
[:neowen]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°565546
matafan
Posté le 13-11-2003 à 04:33:08  profilanswer
 

Si tu veux faire ce qu'a dit BifaceMcLeOD, je propose la méthode suivante : tu utilises un tableau T de N éléments. Les T[i] contiennent chacun un des nombres que tu veux pouvoir tirer (tous différents donc). Tu tires un nombre aléatoire i entre 0 et N-1, qui te donnes ton premier nombre aléatoire : T[i]. Puis tu place T[N-1] dans T[i]. Tu recommences en tirant un nouveau nombre aléatoire entre 0 et N-2. Et ainsi de suite.
 
Par exemple avec N=3 : T[0] = 0, T[1] = 1, T[2] = 2. Tu tires un nombre entre 0 et 2, par exemple 1. Ton premier nombre et donc T[1], soit 1. Tu place donc 2 (T[2]) dans T[1]. Puis tu tires un nouveau nombre entre 0 et 2. Encore 1 par exemple. Ton deuxième nombre est donc T[1], soit 2.

n°565701
BifaceMcLe​OD
The HighGlandeur
Posté le 13-11-2003 à 11:56:18  profilanswer
 

Matafan> Il y a déjà un algorithme performant de mélange aléatoire dans l'API standard...

n°565708
BifaceMcLe​OD
The HighGlandeur
Posté le 13-11-2003 à 12:04:17  profilanswer
 

Sdk a écrit :


 
han moi je pensai ke ca le fesai tout seul snif
 
bah y ont tous mal lu alors :)


En fait, ça ne se fait pas tout seul, parce que dans la réalité, les tirages aléatoires ne sont pas ainsi. Comme le montre l'exemple du tirage de dés.
 
C'est d'ailleurs un peu comme cela que des profs de statistiques se la jouent... Ils répartissent leur classe en 2, demandent pour le cours suivant à la moitié des élèves de tirer n fois un dé et de l'écrire sur une feuille, et à l'autre moitié d'imaginer n tirages de dés et de l'écrire sur une feuille. Ces profs prétendent ensuite être capable de deviner quelles suites de tirages sont de véritables tirages de dés et lesquels n'en ont pas, avec au moins 95% de réussite. Et le pire, c'est qu'ils y arrivent...

n°575278
scubapro10
Posté le 24-11-2003 à 23:53:57  profilanswer
 

Moi, j'utiliserai Random.nextInt en combinaison avec un HashSet (ou un LinkedHashSet si l'ordre de generation a de l'importance).
 
Tu generes un nombre, tu testes s'il existe deja ou pas dans le HashSet (methode HashSet.contains). S'il y est, tu generes un autre nombre avec nextInt. S'il y est pas, tu l'ajoutes au HashSet (methode HashSet.add) et ainsi de suite jusqu'a ce que tu ais le nombre requis d'element (tu peut obtenir le nombre d'elements avec la methode HashSet.size)
 
Voila


Message édité par scubapro10 le 24-11-2003 à 23:59:21
n°575302
benou
Posté le 25-11-2003 à 01:21:34  profilanswer
 


le problèmle étant que si tu veux générer par exemple 99'999 chiffres différents entre 1 et 100'000, ta méthode risque de durer une plombe :/
 
Si tu as pas de chance, elle s'arrêtera jamais ;)


---------------
ma vie, mon oeuvre - HomePlayer
n°939941
Ourson Noi​r
Posté le 07-01-2005 à 10:43:21  profilanswer
 

Moi j'ai une méthode bon ca vaut ce que ca vaut.
 
Imaginons que tu veuilles 100 nombres différents entre 0 et 1000.
 
Tu crée un tableau a 2 colonnes et 1001 lignes
Dans la première colonne tu mets les entiers de 0 à 1000.
Dans la 2ème colonne tu mets des nombres aléatoires (n'importe quoi, par défaut entre 0 et 1).
 
Ensuite tu trie selon la 2ème colonne.
 
Et tu prend les 100 premiers nombres de la 1ère colonne.
 
Après je te laisse le choix de l'implémentation mais l'algo fonctionne et c'est pas le plus long a calculer...
 
 
PS : oups, j'ai pas vu la date... je lisait le topic "[Taupik fun] La plus grosse honte de votre vie?" page 181 (et oui je lis tout depuis le début) et un lien m'a emmené ici. J'ai répondu sans réfléchir...


Message édité par Ourson Noir le 07-01-2005 à 10:46:38
n°939962
sircam
I Like Trains
Posté le 07-01-2005 à 10:53:15  profilanswer
 

[:atari]
Joli déterrage de topic.
 
Très mauvaise méthode proposée !


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°958499
Ourson Noi​r
Posté le 21-01-2005 à 14:25:54  profilanswer
 

sircam a écrit :


Très mauvaise méthode proposée !


 
Peut-tu donner un meilleure méthode stp ?

n°958503
ToxicAveng​er
Posté le 21-01-2005 à 14:28:33  profilanswer
 

le plus simple c'est de de faire du shuffle sur un tableau :o

n°958511
Ourson Noi​r
Posté le 21-01-2005 à 14:40:18  profilanswer
 

Oui mais quel est l'algo qui se cache derrière le mot "shuffle" ?
Ca serait pas ce que j'ai écrit plus haut ?


Message édité par Ourson Noir le 21-01-2005 à 14:41:36
n°958847
the real m​oins moins
Posté le 21-01-2005 à 18:21:33  profilanswer
 

Ourson Noir a écrit :


PS : oups, j'ai pas vu la date... je lisait le topic "[Taupik fun] La plus grosse honte de votre vie?" page 181 (et oui je lis tout depuis le début) et un lien m'a emmené ici. J'ai répondu sans réfléchir...


:cry:


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Question sur les nombre aléatoires...

 

Sujets relatifs
Question sur format de variableQuestion de Full Newbie...
petite question sur les registresafficher le nombre de requete et le temp de chargement
Question netbeans !Question sur form.elements[indice]
Petite question idiote sur requete sqlQuestion sur les tableau en java ...
[C/C++] passer d'un int a 4 char (representant le nombre)Question COMPLEXE sur les nombre aléatoires
Plus de sujets relatifs à : Question sur les nombre aléatoires...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR