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 :

Generer rapidement +sieurs nombres aléatoirement


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 11
    Par défaut Generer rapidement +sieurs nombres aléatoirement
    Bonjour
    Pour un programme j'ai besoin de générer une vingtaine de nombres aléatoires (compris entre 1 et 52) dans un laps de temps très cours (1 à 2 secondes max ) !
    Le seul moyen que j'ai trouvé de faire sa :

    i =(int)((double)rand() / ((double)RAND_MAX + 1) * 52);

    dans une boucle
    Le Pb c'est qu'il est nécessaires de mettre un sleep d'une seconde sinon i aura toujours la même valeurs ...

    J'ai penser a se referer a l'horloge atomique en fonction des millisecondes mais je ne sais pas comment faire ...

    Auriez vous une solution adéquate a mon problème ??

  2. #2
    Membre expérimenté Avatar de Kujara
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    262
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 262
    Par défaut
    Au debut de programme :
    Dans ta boucle :
    Pas besoin de Sleep, rand() renvoie une valeur differente a chaque fois.

  3. #3
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Lie,
    Citation Envoyé par Kujara Voir le message
    Au debut de programme :
    Dans ta boucle :
    Pas besoin de Sleep, rand() renvoie une valeur differente a chaque fois.
    On y revient toujours, utiliser le modulo pour faire ça est déconseillé (je ne vais pas répéter ici pourquoi, cela a déjà été énoncé x fois dans maints sujets).

    Pour cela, la méthode utilisée par Touco777 est meilleure.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 11
    Par défaut
    Citation Envoyé par droggo Voir le message

    Pour cela, la méthode utilisée par Touco777 est meilleure.
    Certes mais elle ne marche pas comme je voudrais ...
    A contrario de la methode de Kujara qui fait exactement ce que je voulais
    La reponse était plus facile que ce que je pensais ! J'ai du chercher midi a 14h pour rien

    Merci bien

  5. #5
    Membre expérimenté Avatar de Kujara
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    262
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 262
    Par défaut
    Citation Envoyé par droggo Voir le message
    Lie,

    On y revient toujours, utiliser le modulo pour faire ça est déconseillé (je ne vais pas répéter ici pourquoi, cela a déjà été énoncé x fois dans maints sujets).

    Pour cela, la méthode utilisée par Touco777 est meilleure.
    Link please, les arguments contre m'interessent

  6. #6
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Citation Envoyé par droggo Voir le message
    Lie,

    On y revient toujours, utiliser le modulo pour faire ça est déconseillé (je ne vais pas répéter ici pourquoi, cela a déjà été énoncé x fois dans maints sujets).

    Pour cela, la méthode utilisée par Touco777 est meilleure.
    Normalement, il n'y a aucune différence entre les deux...

    • le transtypage d'un réel en entier, sans utiliser les possibilités d'arrondi se fait en perdant la partie décimale du réel
    • le modulo fournit tout simplement le reste entier de la division, et donc correspond au même résultat
    • Dés le moment où l'on veut que n'importe quel nombre sélectionné de manière aléatoire entre dans un espace compris entre 0 et N, il faudra le diviser de manière à être sûr que le résultat sera compris entre 0 et N
    • On ne s'intéresse pas à la partie décimale du résultat, et, de toutes manières, on ne dispose que de N possibilités...
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  7. #7
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Kio,

    Je ne redonnerai pas les explications, qui, je le répète, ont été données x fois déjà.

    En gros, les bits de poids faible sont généralement moins aléatoires, il faut donc éviter de les utiliser seuls, ce que l'on fait avec le modulo.

  8. #8
    Membre expérimenté Avatar de Kujara
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    262
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 262
    Par défaut
    Citation Envoyé par droggo Voir le message
    Kio,

    Je ne redonnerai pas les explications, qui, je le répète, ont été données x fois déjà.

    En gros, les bits de poids faible sont généralement moins aléatoires, il faut donc éviter de les utiliser seuls, ce que l'on fait avec le modulo.
    Argument valable uniquement sur un modulo en puissance de 2, auquel cas le modulo est inutile.

    Pour les modulo genre modulo 3, tous les bits sont utilisés ....

    Bref, j'attends les liens vers des arguments valables ...

Discussions similaires

  1. generer un fichier avec nombres aléatoires
    Par ben_tiba_asma dans le forum Débuter
    Réponses: 8
    Dernier message: 20/09/2011, 14h15
  2. Generer un nombre aléatoire
    Par rototoro dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 05/09/2009, 17h06
  3. Generer un nombre aléatoire entre 0 et 1
    Par Eclipse39 dans le forum Débuter
    Réponses: 2
    Dernier message: 10/02/2009, 21h26
  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