Generateur de nombre aléatoire

Résolu
cobra85 Messages postés 132 Date d'inscription   Statut Membre Dernière intervention   -  
cobra85 Messages postés 132 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

je cherche à faire un générateur de nombre aléatoire, entre [1;4]

le code ci dessous, me genere toujours la meme suite de nombre.
(il s'agit du langage C)
void tirerSymbole(int e)
{
   // srand(time(NULL));
    {
        e = 1 + (int)((double)rand() / ((double)RAND_MAX + 1) * 5);
        if (e==1)
        {
            printf("PIERRE");
        }
        else if (e==2)
        {
            printf("FEUILLE");
        }
        else if (e==3)
        {
            printf("CISEAUX");
        }
        else if (e==4)
        {
            printf("PUITS");
        }
    }
    return e;
}


moi je voudrais qu'il me le génere dans un ordre quelconque.

Merci
A voir également:

5 réponses

sebsauvage Messages postés 32893 Date d'inscription   Statut Modérateur Dernière intervention   15 662
 
:-)

rand() ne renvoie pas de nombres aléatoire. Uniquement des nombres pseudo-aléatoires, c'est à dire une suite de nombre calculés par une formulaire mathématique figée qui donne toujours les mêmes nombres dans le même ordre.

Il faudrait l'initialiser avec quelquechose (date/heure est un début).
C'est à ça que sert le srand(time(NULL)); que tu as mis en commentaire.
0
blux Messages postés 27121 Date d'inscription   Statut Modérateur Dernière intervention   3 359
 
Salut,

en fait, l'ordinateur ne sait pas générer de nombres vraiment aléatoires, il possède un algorithme de génération de nombres pseudo-aléatoires qui sont liés les uns aux autres. Mais comme tout algorithme, si on le nourrit avec le même nombre en entrée, on a le même nombre en sortie. C'est pourquoi il est recommandé de changer la 'graine' de départ de l'algorithme avec la fonction srand (s pour seed = graine en anglais). On peut donner date et heure, récupérer la miliseconde de l'heure courante ou un timestamp unix (nombre de secondes depuis le 1/1/70)...
0
cobra85 Messages postés 132 Date d'inscription   Statut Membre Dernière intervention   3
 
Ok, mais comment je fait pour le faire avec la date et l'heure.
0
sebsauvage Messages postés 32893 Date d'inscription   Statut Modérateur Dernière intervention   15 662
 
Le srand(...) sert à ça.
0

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

Posez votre question
cobra85 Messages postés 132 Date d'inscription   Statut Membre Dernière intervention   3
 
//tirage au hazard:
int Random (int _iMin, int _iMax)
{
return (_iMin + (rand () % (_iMax-_iMin+1)));
}

int tirerSymbole(int e)
{
int iRandom;

srand (time (NULL));
iRandom = Random (1,4);
//printf ("%d", iRandom);
if (iRandom==1)
{
printf("PIERRE");
}
if (iRandom==2)
{
printf("FEUILLE");
}
if (iRandom==3)
{
printf("CISEAUX");
}
if (iRandom==4)
{
printf("PUITS");
}
return e;
}


Merci de votre aide
0