[C]Génération les memes valeurs aléatoires

Sportif_c -  
Leviathan49 Messages postés 257 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
Je sais que la fonction rand renvoie des valeurs élatoires.
Ce que je souhaiterais savoir comment faire pour générer les memes valeurs aléatoires à chaque lancement de programme?
J'ai utlisé la fonction srand. Mais ça ne fonctionne pas :(.
Des idées?
Merci par avance.



A voir également:

5 réponses

bikiew Messages postés 84 Date d'inscription   Statut Membre Dernière intervention   23
 
pourquoi voudrais tu generer les memes valeurs aleatoires ? le principe est justement que ca soit aleatoire donc toujours different.

si c'est pour resoudre un probleme, creer une fonction,etc.. je pense que tu prends le probleme du mauvais cote, donne plus de precision dans quel but tu veux faire ca et on pourra t'aider
0
Leviathan49 Messages postés 257 Date d'inscription   Statut Membre Dernière intervention   70
 
Essaye justement sans utiliser srand.
Avec rand uniquement.
https://nicolasj.developpez.com/articles/libc/hasard/#LIII
0
Sportif_c
 
Merci pour vos réponses.
Mon programme a cete forme
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#define nbreEssaies 1000

int my_rand (void);

int main (void)
{
   int i, j;
   int tab[10];
   for(j=0;j<nbreEssaies;j++)
  {
      for (i = 0; i<10; i++)
      {
          tab[i]=my_rand();
      }
 }
   return (EXIT_SUCCESS);
}


J'ai essayé avec et sans la fonction srand() ça ne fonctionne pas.
Des idées?
Merci encore.
0
adns Messages postés 1094 Date d'inscription   Statut Membre Dernière intervention   153
 
Bonjour ,

cela nous aiderais plus si tu nous expliquais plus clairement ton besoin !

Adns
0
Sportif_c
 
Je souhaiterais générer aléatoires 10 valeurs et le stocker dans un tableau.
Le problème qu'il y a à chaque lancement de programme, j'ai des nouveaux valeurs.
Est ce possible d'avoir les memes valeurs à chaque lancement? Sinon comment après pourvoir utiliser des valeurs sachant que à chaque exécution on aura une autre liste?
0
adns Messages postés 1094 Date d'inscription   Statut Membre Dernière intervention   153
 
Je ne sais pas si j'ai bien compris le problème mais je pourrais te conseiller de faire quelque chose comme cela (syntaxe non vérifiée)

#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#define nbreEssaies 1000

int my_rand (void);

int Ten(double rand){
   rand = (int) rand;
   if(rand>10){
      rand = rand/10;
      Ten(rand);
   }else{
      return rand
   }
}


int main (void)
{
   int i, j;
   int tab[10];
   for(j=0;j<nbreEssaies;j++)
  {
      for (i = 0; i<10; i++)
      {
          tab[i]=Ten(rand());
      }
 }
   return (EXIT_SUCCESS);
}


Ainsi tu génère un entier aléatoire qui sera toujours compris en 0 et 10.

Adns
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
déjà, il nous manque my_rand().
srand s'initialise une seule fois pour tout le programme. Normalement, le conportement que tu décris est celui par défaut. Donne nous l'ensemble de ton code, et pas juste un petit bout qui ne nous avance à rien.
0

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

Posez votre question
Leviathan49 Messages postés 257 Date d'inscription   Statut Membre Dernière intervention   70
 
Mmh tu as repris un bout du programme du lien que je t'ai passé mais il en manque un bout. Avec ton programme cela donne
#include <stdlib.h> 
#include <stdio.h> 
#include <time.h> 

int main (void) 
{ 
   int i, j; 
   int tab[10]; 
   for (i = 0; i<10; i++) 
   { 
        tab[i]=rand(); 
   } 
 return 0; 
} 

Ce programme devrait produire A CHAQUE LANCEMENT DU PROGRAMME les même 10 chiffres aléatoire.
Si comme dans ton programme tu génère 10 000 nombres aléatoires, ce seront les même 10 000 nombres aléatoire à chaque fois.
0
Leviathan49 Messages postés 257 Date d'inscription   Statut Membre Dernière intervention   70
 
Pour preuve:
#include <stdlib.h>  
#include <stdio.h>  

int main (void)  
{  
   int i;  
    
   for (i = 0; i<10; i++)  
   {  
        printf("%d\n",rand());  
   }  
 return 0;  
} 


Ce programme renvoie toujours la même suite de nombre. On peut faire varier la suite de nombre avec srand.
#include <stdlib.h>  
#include <stdio.h>  

int main (void)  
{  
   int i;  
   srand(7777); 
   for (i = 0; i<10; i++)  
   {  
        printf("%d\n",rand());  
   }  
 return 0;  
} 

Du moment que la valeur du srand ne change pas entre deux exécution du programme les chiffres générés reste les mêmes.
0