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 );
        }
    }
}