Salut !

Je viens de penser un truc.
Pour être honnête, je trouve le code dans la FAQ assez lourd

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 ?:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 ?