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 :

Grand nombre aléatoire


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de corentin59
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 462
    Par défaut Grand nombre aléatoire
    Bonjour

    voici mon problème : je souhaite faire une fonction tirerAlea(N,a) qui met dans l'entier a un nombre aléatoire compris entre 0 et l'entier N inclus. La difficulté c'est que mes entiers ne sont pas de simples "int" mais des tableaux de NB "unsigned int" car je veux manipuler des grands nombres. Chaque élément du tableau correspond à une puissance 2^(8*sizeof(unsigned int)) et le bit de poids faible est le dernier élément du tableau.

    voici ce que j'ai fait pour ma fonction, qu'en pensez-vous ?

    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
    void tirerAlea(unsigned int *N,unsigned int *a) {
        int i, prem=1;
        double alea;
        unsigned int valmax=-1;
     
        for (i=0;i<NB;i++) {
            a[i] = 0;
            if ( prem == 1 && N[i] != 0 ) {
                alea = (double)rand() / (double)RAND_MAX;
                a[i] = (unsigned int) ( alea * N[i] );
                prem = 0;
            } else if ( prem == 0 ) {
                alea = (double)rand() / (double)RAND_MAX;
                a[i] = (unsigned int) ( alea * valmax );
            }
        }
    }

  2. #2
    Membre Expert Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Par défaut
    Citation Envoyé par corentin59 Voir le message
    voici ce que j'ai fait pour ma fonction, qu'en pensez-vous ?
    Moi je pense que ça ne sert à rien de réinventer la roue, tu as la bibliothèque Gnu GMP pour ça : http://gmplib.org/
    Cordialement.

  3. #3
    Invité(e)
    Invité(e)
    Par défaut
    Bonjour,

    En plus, ton générateur risque de ne pas être uniformément réparti :

    si RAND_MAX est inférieur à la limite des entiers non signés, tu aura des trous dans ta répartition.

  4. #4
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par corentin59 Voir le message
    voici mon problème : je souhaite faire une fonction tirerAlea(N,a) qui met dans l'entier a un nombre aléatoire compris entre 0 et l'entier N inclus. La difficulté c'est que mes entiers ne sont pas de simples "int" mais des tableaux de NB "unsigned int" car je veux manipuler des grands nombres. Chaque élément du tableau correspond à une puissance 2^(8*sizeof(unsigned int)) et le bit de poids faible est le dernier élément du tableau.

    voici ce que j'ai fait pour ma fonction, qu'en pensez-vous ?
    Naïvement, je ferais des sommes plutôt que des multiplications, mais je ne suis pas expert en math...

    C'est pas trop une question de C...

Discussions similaires

  1. Réponses: 3
    Dernier message: 04/06/2014, 13h16
  2. Générer un grand nombre de variables aléatoires
    Par hazaki dans le forum Débuter
    Réponses: 3
    Dernier message: 31/01/2011, 10h35
  3. Trés grand nombre aléatoire
    Par Micke7 dans le forum C++
    Réponses: 13
    Dernier message: 17/04/2007, 08h49
  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