Générer nombre
jobry
-
Pacorabanix Messages postés 4122 Date d'inscription Statut Membre Dernière intervention -
Pacorabanix Messages postés 4122 Date d'inscription Statut Membre Dernière intervention -
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");
}
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");
}
Configuration: Windows XP Firefox 3.0.15
3 réponses
-
rand() %(MAX- MIN + 1)
ce ne serait pas plutot
rand()/RAND_MAX * (MAX-MIN+1) ? -
pardon, il manque un cast en double sinon ça marche pas :
((double) rand()/RAND_MAX * (MAX-MIN+1) ) +MIN -
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é...