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

C++ Discussion :

Threads et nombre aléatoire


Sujet :

C++

  1. #1
    Membre actif
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 49
    Par défaut Threads et nombre aléatoire
    Bonjour à tous, voilà j'ai un petit soucis dans mes threads.

    Pour faire simple j'ai un rand() dans la méthode Run qui sert à générer un int aléatoire pour appeler la méthode Sleep() et cependant mes 2 Threads qui s'executent en parallèle génèrent la même valeur.

    Un petite explication ?

    (je mets une partie de 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
     
    int hasard(int min, int max){
    	return (int) (min + ((float) rand() / RAND_MAX * (max - min + 1)));
    }
    void robot::Run(void)
    {
    	int attente;
    	int i;
    	std::cout<<this->getNom()<<" demarre ..."<<std::endl;
     
    	attente=hasard(500,1000);
     
    	while(this->vie > 0)
    	{
    		std::cout<<attente<<std::endl;
    		this->cycleDeVie();
    		Sleep(attente);
    		attente=hasard(500,1000);
    	}
     
    	std::cout<<this->getNom()<<" J'ai termine !!"<<std::endl;
    }
    Merci d'avance !

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 393
    Par défaut
    Ben, ça dépend de l'implémentation de rand(), donc du système.
    Pour contrer cela, je conseillerais un appel srand() au début de chaque thread...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 964
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 964
    Par défaut
    Peo,
    Citation Envoyé par Médinoc
    Ben, ça dépend de l'implémentation de rand(), donc du système.
    Pour contrer cela, je conseillerais un appel srand() au début de chaque thread...
    Ou faire ton propre générateur, au moins tu sauras comment il fonctionne.

  4. #4
    Inactif  
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 743
    Par défaut
    De toute façon, la fonction rand() ne fonctionne pas correctement sur plusieurs processus à la fois, car toutes les implémentations (POSIX) utilisent une variable statique, donc les valeurs ne sont pas aléatoires d'un processus à l'autre.
    Bref c'est pas une fonction thread-safe.

  5. #5
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 393
    Par défaut
    Ben, vu les résultats obtenus (même valeur pour les deux threads), il semblerait qu'au contraire, ce soit thread-safe : Un appel à rand() dans un thread n'affecte pas ceux des autres threads.
    Mais il est aussi possible que ça dépende de la version de la bibliothèque de multithreading (threads userspace dans un même processus, ou bien NPTL où les threads sont principalement des processus à mémoire partagée)...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    Inactif  
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 743
    Par défaut
    Soit, ça fonctionne en multi-thread, mais c'est quand même pas généralement voulu que la suite aléatoire soit dépendante d'un thread à l'autre. Et cette suite n'est pas en théorie identique à cause des "races"

    Dwarfman78 voulait une explication au phénomène, je lui ai donné: c'est à cause d'une variable statique.

    De toute façon ta proposition de faire un srand pour chaque thread était à coté de la plaque. T'aurais plutôt dû lui dire d'utiliser la fonction POSIX rand_r() ou drand48_r().

    "The function rand() is not reentrant or thread-safe..."

    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    NAME
           rand, rand_r, srand - pseudo-random number generator
     
     
    SYNOPSIS
           #include <stdlib.h>
     
     
          int rand(void);
     
     
          int rand_r(unsigned int *seedp);
     
     
          void srand(unsigned int seed);
     
     
    DESCRIPTION
           The  rand()  function  returns  a  pseudo-random  integer between 0 and
           RAND_MAX.
     
     
          The srand() function sets its argument as the seed for a  new  sequence
           of  pseudo-random  integers  to be returned by rand().  These sequences
           are repeatable by calling srand() with the same seed value.
     
     
          If no seed value is provided,  the  rand()  function  is  automatically
           seeded with a value of 1.
     
     
          The function rand() is not reentrant or thread-safe, since it uses hid-
           den state that is modified on each call. This might just  be  the  seed
           value to be used by the next call, or it might be something more elabo-
           rate. In order to get reproducible behaviour in a threaded application,
           this  state  must  be  made explicit. The function rand_r() is supplied
           with a pointer to an unsigned int, to be used as state.  This is a very
           small  amount  of  state, so this function will be a weak pseudo-random
           generator. Try drand48_r(3) instead.
     
     
    RETURN VALUE
           The rand()  and  rand_r()  functions  return  a  value  between  0  and
           RAND_MAX.  The srand() function returns no value.
     
     
    EXAMPLE
           POSIX.1-2001 gives the following example of an implementation of rand()
           and srand(), possibly useful when one needs the same  sequence  on  two
           different machines.
     
     
              static unsigned long next = 1;
     
     
              /* RAND_MAX assumed to be 32767 */
               int myrand(void) {
                   next = next * 1103515245 + 12345;
                   return((unsigned)(next/65536) % 32768);
               }
     
     
              void mysrand(unsigned seed) {
                   next = seed;
               }
     
     
    NOTES
           The  versions of rand() and srand() in the Linux C Library use the same
           random number generator as random() and srandom(), so  the  lower-order
           bits  should  be as random as the higher-order bits.  However, on older
           rand() implementations, and on  current  implementations  on  different
           systems,  the  lower-order  bits  are much less random than the higher-
           order bits.  Do not use this function in applications  intended  to  be
           portable when good randomness is needed.
     
     
          In  Numerical Recipes in C: The Art of Scientific Computing (William H.
           Press, Brian P. Flannery, Saul A. Teukolsky, William T. Vetterling; New
           York:  Cambridge University Press, 1992 (2nd ed., p. 277)), the follow-
           ing comments are made:
                  "If you want to generate a random integer between 1 and 10,  you
                  should always do it by using high-order bits, as in
     
     
                        j = 1 + (int) (10.0 * (rand() / (RAND_MAX + 1.0)));
     
     
                 and never by anything resembling
     
     
                        j = 1 + (rand() % 10);
     
     
                 (which uses lower-order bits)."
     
     
          Random-number  generation is a complex topic.  The Numerical Recipes in
           C book (see reference above) provides an excellent discussion of  prac-
           tical random-number generation issues in Chapter 7 (Random Numbers).
     
     
          For  a  more  theoretical  discussion  which also covers many practical
           issues in depth, see Chapter 3 (Random Numbers) in  Donald  E.  Knuth's
           The  Art  of Computer Programming, volume 2 (Seminumerical Algorithms),
           2nd ed.; Reading,  Massachusetts:  Addison-Wesley  Publishing  Company,
           1981.
     
     
    CONFORMING TO
           The  functions  rand()  and  srand() conform to SVr4, 4.3BSD, C89, C99,
           POSIX.1-2001.  The function rand_r() is from POSIX.1-2001.
     
     
    SEE ALSO
           drand48(3), random(3)

  7. #7
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 393
    Par défaut
    Justement, la suite n'est PAS dépendante d'un thread à l'autre dans le cas actuel. Il n'y a donc pas de race conditions.

    De plus, on n'a jamais dit qu'on était ici sous POSIX. Surtout que dès le message de départ, le P.O. a dit utiliser la fonction Sleep(), qui est une fonction Win32.
    Et le comportement observé correspond au fonctionnement habituel des fonctions non-réentrantes de la CRT de Microsoft: Les données statiques sont locales à un thread, les fonctions sont donc thread-safe (mais pas réentrantes).
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  8. #8
    Inactif  
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 743
    Par défaut
    Il n'a pas dit du tout sous quel environnement il travaillait. (et pas non plus que c'était Microsoft) J'utilise POSIX comme exemple. Dwarfman78 n'a qu'a chercher des fonctions équivalentes sous son système.

    Si par le plus grand des hasars son programme marche sous son système (ce n'est pas le cas actuellement) il ne marchera pas dans le cas général sous Linux/Unix.

    Citation Envoyé par Médinoc
    Justement, la suite n'est PAS dépendante d'un thread à l'autre dans le cas actuel. Il n'y a donc pas de race conditions.
    Dwarfman78 se plaint que "2 Threads qui s'executent en parallèle génèrent la même valeur". T'as pas un tout petit peu l'impression que c'est dépendant d'un thread à l'autre????????!!!!!!!
    C'était peut-être pas à côté de la plaque de ta part de lui conseiller "un appel srand() au début de chaque thread..."

  9. #9
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 393
    Par défaut
    Citation Envoyé par Charlemagne
    Il n'a pas dit du tout sous quel environnement il travaillait. (et pas non plus que c'était Microsoft) J'utilise POSIX comme exemple. Dwarfman78 n'a qu'a chercher des fonctions équivalentes sous son système.

    Si par le plus grand des hasars son programme marche sous son système (ce n'est pas le cas actuellement) il ne marchera pas dans le cas général sous Linux/Unix.
    J'ai bien dit "dans le cas actuel".
    Et dans un cas où la séquence aléatoire n'est pas isolée, le posteur originel aurait difficilement (j'admets que ce n'est pas impossible, mais très improbable) eu spécifiquement ce problème-là.

    Dwarfman78 se plaint que "2 Threads qui s'executent en parallèle génèrent la même valeur". T'as pas un tout petit peu l'impression que c'est dépendant d'un thread à l'autre????????!!!!!!!
    Justement non : Chaque thread s'exécute comme si l'autre n'existait pas. Pour chaque thread, "L'autre n'a aucune influence sur mes rand()".
    Et comme ils sont tous les deux partis de la même séquence...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  10. #10
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 393
    Par défaut
    Un truc qui serait intéressant, ce serait de tester en faisant quelques appels à rand() AVANT de démarrer un nouveau thread (toujours sous Win32).
    Le nouveau thread repartira-t-il du début ou prendra-t-il la séquence là où elle en est (comme un fork(), quoi) ?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  11. #11
    Inactif  
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 743
    Par défaut
    ustement non : Chaque thread s'exécute comme si l'autre n'existait pas. Pour chaque thread, "L'autre n'a aucune influence sur mes rand()".
    Et comme ils sont tous les deux partis de la même séquence...
    Une telle mauvaise foi de la part d'un "Expert Confirmé Sénior" m'exaspère.
    Chaque thread vit sa vie, c'est un fait.
    Je te parle de SUITES dépendantes. En d'autres termes: la variable aléatoire de chaque thread est dépendante de l'autre. T'as jamais fais de probas ou quoi!!!

    Continue à faire tes srand() sur chaque thread, à affirmer que rand est thread-safe, etc... j'en ai marre de me battre contre des moulins à vent.

  12. #12
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    si les appels a rand sont indépendantes entre les threads, il est normale qu'elle te donne la même suite de nombre, car les deux thread sont initialisé avec la même valeur par default.
    utilise srand dans chaque thread pour reinitialiser les rand

    http://www.cplusplus.com/reference/c...lib/srand.html

    Attention, si tu utilise time pour initialiser le rand de tes thread et que l'initialisation est trop rapide, tu risque d'avoir le même problème...

  13. #13
    Inactif  
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 743
    Par défaut
    Encore un qui n'a rien compris de rien et qui s'est même pas donné la peine de comprendre la discussion...

    The function rand() is not reentrant or thread-safe, since it uses hid-
    den state that is modified on each call. This might just be the seed
    value to be used by the next call, or it might be something more elabo-
    rate. In order to get reproducible behaviour in a threaded application,
    this state must be made explicit. The function rand_r() is supplied
    with a pointer to an unsigned int, to be used as state. This is a very
    small amount of state, so this function will be a weak pseudo-random
    generator. Try drand48_r(3) instead.

  14. #14
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par Charlemagne
    Encore un qui n'a rien compris de rien et qui s'est même pas donné la peine de comprendre la discussion...
    molo, zen mec

  15. #15
    Inactif  
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 743
    Par défaut
    Citation Envoyé par Mongaulois
    molo, zen mec
    Quoi j'ai pas raison?

  16. #16
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par Charlemagne
    Dwarfman78 se plaint que "2 Threads qui s'executent en parallèle génèrent la même valeur". T'as pas un tout petit peu l'impression que c'est dépendant d'un thread à l'autre????????!!!!!!!
    ben non justement.

    si t'utilise pas srand au début d'un programme, t'aura toujours la même suite aléatoire avec rand a chaque exécution.

  17. #17
    Inactif  
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 743
    Par défaut
    Et t'as pas remarqué que t'es pas le premier à faire cette suggestion et que je m'égosille à vous dire que c'est pas suffisant parce que rand() n'est pas thread-safe???!!!
    Encore d'autres moulins à vent...

  18. #18
    Membre Expert
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Par défaut
    Bon écoute:

    on imagine qu'il y a une variable statique et deux threads:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    | THREAD 1 | | THREAD 2|
    Un appel à rand() modifie la valeur de la variable statique des DEUX threads, qui est utilisée pour générer le prochain nombre aléatoire.

    Donc avec un appel par le THREAD 1 et un par le THREAD 2:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    thread 1 -- appel à rand() -- modification de la variable statique
    thread 2 -- appel à rand() -- nouvelle modification de la variable statique
    quand thread 1 appelle rand, il modifie la variable statique ce qui donne une nouvelle valeur pour le thread 2.

    Tu vois donc que dans le cas du P.O., ce n'est pas possible qu'il y ait une valeur commune aux deux threads avec une variable statique.

  19. #19
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    je comprend ce que tu veut dire

    mais explique moi pourquoi :


    Citation Envoyé par dwarfman78
    mes 2 Threads qui s'executent en parallèle génèrent la même valeur.

  20. #20
    Inactif  
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 743
    Par défaut
    Et encore des moulins à vent...
    Donc coyotte507 conteste la doc POSIX (et surement d'autres...) et nie l'existence des "races" du multi-threading...
    (les "races" c'est quand 2 threads font appels en même temps à la même ressource)

    Citation Envoyé par Mongaulois
    je comprend ce que tu veut dire

    mais explique moi pourquoi :
    J'ai dit que srand n'est pas SUFFISANT. Apprenez à lire.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 4 1234 DernièreDernière

Discussions similaires

  1. p'tite question de cryptage ( nombre aléatoire )
    Par smyley dans le forum Algorithmes et structures de données
    Réponses: 53
    Dernier message: 08/11/2004, 10h07
  2. Nombres aléatoires
    Par Mat 74 dans le forum Assembleur
    Réponses: 20
    Dernier message: 29/08/2004, 13h31
  3. recherche algo de génération de nombre aléatoire
    Par Pascale38 dans le forum MFC
    Réponses: 2
    Dernier message: 26/01/2004, 14h20
  4. Nombre aléatoire en SQL
    Par sqlnet dans le forum Langage SQL
    Réponses: 8
    Dernier message: 19/08/2003, 12h38
  5. Générer un nombre aléatoire entre 0 et 1 (INCLUS !!!)
    Par haypo dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 22/08/2002, 16h30

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