Generer un nombre aleatoir en C

Signaler
Messages postés
10
Date d'inscription
vendredi 20 février 2004
Statut
Membre
Dernière intervention
11 janvier 2006
-
cs_djl
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
-
Salut à tous, j'ai besoin de générer plusieur nombre aleatoir, mais la source que j'utilise, m'oblige à attendre une seconde entre chaque nombre, car elle est basé sur l'heur system.
voici la source:

static int aleatoir()
{

int Chiffre;
srand ((unsigned)time (0));
Chiffre=rand();
sleep(1000);

return Chiffre;

}

Alors si quelqu'un pouvait m'aider, merci d'avance.

6 réponses

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
16
sleep(1000);
Te suffit de l'enlever, a quoi sert-il ???

srand ((unsigned)time (0));
Devrait se trouver 1 seule fois au debut du prog et basta.

var = rand();
direct dans le code sans appel de fonction en plus.

ciao...
BruNews, Admin CS, MVP Visual C++
Messages postés
10
Date d'inscription
vendredi 20 février 2004
Statut
Membre
Dernière intervention
11 janvier 2006

sleep(1000) permet justement d'attendre une seconde, si je l'enlève tout mes nombres aleatoirs seront identiques car ma commande est basé sur l'heur system mais uniquement au niveau des secondes, je dois donc attendre une seconde entre chaque pour en avoir un différent.

Mais si tu pouvais me filer une source complete pour generer des nombres aleatoirs qui ne soit pas basé sur les secondes, mais sur les millisecondes.

Merci d'avance
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
16
Mais non, si tu suis TOUT ce que j'ai mis au dessus, tu ne generes pas des nombres identiques.

void main()
{
srand ((unsigned)time (0)); // 1 SEULE FOIS

// ... instructions
var1 = rand();

// ... instructions
var2 = rand();

}

ciao...
BruNews, Admin CS, MVP Visual C++
Messages postés
10
Date d'inscription
vendredi 20 février 2004
Statut
Membre
Dernière intervention
11 janvier 2006

Désolé, effectivement, ça marche.
Merci encore
Messages postés
1138
Date d'inscription
mardi 10 juin 2003
Statut
Membre
Dernière intervention
25 janvier 2009
2
Sinon au lieu de time, tu peux fair GetTickCount, ca te en donne le temps en ms depuis le demarache de Windows (ou du PC je ne saius plus)
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
7
oui, mais avec time on reste portable (ca depend de ce qu'on veut faire)