Merci godrik, j'ai quand même réussi à résoudre mon problème.
Je peux pas dire que la distribution est bonne (plus l'échelle est grande moins bonne elle est), mais par exemple sur 1'000'000 de valeurs de 0 à 999'999, en environ 10 secondes je peux toutes les toucher en tombant dessus via cette nouvelle version (qui est en fait la même chose que mon ancienne, mais qui au lieu de construire le nombre bit par bit, le construit par bloc de 1000, avec au max 1 milliard) :
long long int randmilliard ()
{
long long int tot;
tot=rand()%1000;
tot+=(rand()%1000)*1000;
tot+=(rand()%1000)*1000000;
return tot;
}
int randmillion = randmilliard()%1000000;
Mais je jetterais quand même un oeil à ce que tu m'as dit, ça serait quand même mieux d'avoir un truc propre.