Salut !
Je viens de penser un truc.
Pour être honnête, je trouve le code dans la FAQ assez lourd
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| #include <stdlib.h>
int rand_n(int n)
{
int partSize = 1 + (n == RAND_MAX ? 0 : (RAND_MAX - n) / (n + 1));
int maxUsefull = partSize * n + (partSize - 1);
int draw;
do {
draw = rand();
} while (draw > maxUsefull);
return draw / partSize;
} |
Y a 3 variables, une boucle, bref bien trop lourd imo.
Pourquoi ne pas simplement utiliser quelque chose de ce style ?:
int n = (rand() >> 8) % x;
Cela permettrait d'éviter d'avantager les bits de poids le plus faible et me paraît plus performant en même temps.
Qu'en pensez-vous ?
Partager