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