Pbm avec randomize

goueg83460 Messages postés 57 Date d'inscription mercredi 23 novembre 2005 Statut Membre Dernière intervention 7 août 2009 - 20 févr. 2006 à 12:15
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 - 20 févr. 2006 à 23:43
bonjour j'essai de faire un programme qui génére un nombre aléatoirement à 4chiffres mais il me sort la plupart du temps un nombre a 5 chiffres. voici mon code/

int main(int argc, char* argv[])
{
int i,j,nb =0;
randomize();
for(i=0; i<1000; i++)
{
nb = rand();
}
printf ("%d", nb);
getch();
}

voila merci à celui ou ceux qui pourront m'aider.

6 réponses

DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
20 févr. 2006 à 12:26
Pense a initialiser le randomize a time(null) et a indiquer l'intervalle souhaité

Shell
0
wxccxw Messages postés 755 Date d'inscription samedi 15 mai 2004 Statut Membre Dernière intervention 30 janvier 2011
20 févr. 2006 à 12:33
non le probleme, c'est que tu doit lui dire entre quoi et quoi tu veux ton nombre donc tu fais
int hasard(int min, int max);

int hasard(int min, int max){

return rand() % (max-min) + min; // Génére entre 0 et max-min puis décale pour être entre min et max

}

nb = hasard(0,100);

voila entre 0 et 100 :)
0
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
20 févr. 2006 à 14:27
Ne pas oublier d'initialiser le générateur pour ne pas avoir deux fois le meme nombre.
Soit :

int DonneNombre(int iBorneMin, int iBorneMax)
{
return rand() % (iBorneMax- iBorneMin) + iBorneMin;
}

int main()
{
int i;
int iNombre;

srand(time(NULL));

for(i=0;i<1000;i++)
{
iNombre = DonneNombre(1000,9999);
printf("Nombre %i\t\t : %i\n", iNombre);
}

return 0;
}

Shell
0
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
20 févr. 2006 à 14:29
Oupssss, le printf est érroné.
Remplace le par :

printf("Nombre %i\t\t : %i\n", i, iNombre);

J'avais oublié de spécifier le "i" en deuxième paramètres.

Shell
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_chris91 Messages postés 54 Date d'inscription jeudi 20 novembre 2003 Statut Membre Dernière intervention 4 avril 2007
20 févr. 2006 à 19:13
bonjour,

rand() % N donne de 0 à N - 1

donc

hasard(0, 100) -> de 0 à 99

DonneNombre(1000, 9999) -> de 1000 à 9998

sinon si c'est 4 chiffres max la question,
-> hasard(0, 10000) pour 0 à 9999

bye.
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
20 févr. 2006 à 23:43
Voici un petit bout de code qui pourrait t'aider:
(2 fonctions: une qui initialise le randomizer et le randomizer)

void SeedTheRandomizer (void)
{
/* Les uint sonts la même chose que les UINT */
SYSTEMTIME systime;
uint setseed = 0;

/* Ici c'est pas time() mais cela assure de ne pas voir le même nombre 2 fois */
GetSystemTime(&systime);

setseed = ((uint)systime.wYear + (uint)systime.wMonth + (uint)systime.wDayOfWeek + (uint)systime.wDay+ (uint)systime.wHour + (uint)systime.wMinute + (uint)systime.wSecond + (uint)systime.wMilliseconds);

srand(setseed);
}

int ReturnARandomNumber (int Min, int Max)
{
int Result = 0;

Result = ((rand() % (int)(((Max) + 1) - (Min))) + (Min));

return Result;
}
0
Rejoignez-nous