Générer nombre

Fermé
Signaler
-
Messages postés
3245
Date d'inscription
jeudi 23 août 2007
Statut
Membre
Dernière intervention
19 mai 2013
-
Bonjour,
je voudrais générer un nombre de 8 chiffres mais le problème c'est que je n'arrive a en générer au maximum que 5 ; je met mon code :

#include <stdio.h>
#include <stdlib.h>
#include <time.h>


int main ( int argc, char** argv )
{
srand(time(NULL));
long nombreMystere = 0;
long MAX = 99999999, MIN = 10000000;
int compteur = 0;

do
{
// Génération du nombre aléatoire
nombreMystere = (rand() %(MAX- MIN + 1)) + MIN;

printf("La variable vaut %d\n", nombreMystere);
compteur++;
}while (compteur < 10);
system("PAUSE");


}

3 réponses

Messages postés
3245
Date d'inscription
jeudi 23 août 2007
Statut
Membre
Dernière intervention
19 mai 2013
658
rand() %(MAX- MIN + 1)

ce ne serait pas plutot

rand()/RAND_MAX * (MAX-MIN+1) ?
Messages postés
3245
Date d'inscription
jeudi 23 août 2007
Statut
Membre
Dernière intervention
19 mai 2013
658
pardon, il manque un cast en double sinon ça marche pas :
((double) rand()/RAND_MAX * (MAX-MIN+1) ) +MIN
Messages postés
3245
Date d'inscription
jeudi 23 août 2007
Statut
Membre
Dernière intervention
19 mai 2013
658
en fait je viens de réaliser qqchose :

de toute façon les nombres sont générés entre 0 et RAND_MAX, et ma technique (et toute autre basée juste sur un appel à rand() d'ailleurs) ne permet que de faire "croire" qu'on a des nombres entre 10000000 et 99999999, mais en fait parmis ceux là il n'y aura que RAND_MAX nombres différents qui seront toujours les mêmes, il y aura plein de nombres qui ne seront jamais utilisés.

si cela a une importance pour ton programme, il faut mieux utiliser une bibliothèque de générateurs de nombres aléatoires plus puissante. je n'en ai pas sous la main, désolé...