[C]generer chiffre aleatoire probleme

Fermé
kyky - 26 mai 2007 à 15:41
 Pierre-Antoine - 26 mai 2007 à 16:53
bonjour voila pour la realisation d'un sudoku je creer une fonction qui genere des chiffre aleatoire pour ainsi creer des grilles de sudoku a resoudre
void ChiffreHasard1( int Marge,int *x,int *y,int *i ,int *j,int *k,int marge )
{                      
srand(time(NULL));
*x=(rand() % Marge);
*y=(rand() % Marge);
*i=(rand() % Marge);
*j=(rand() % Marge);
*k=(rand() % marge);
} 
   

void gen2(grille X)
{int cpt=0,i,j,x,y,k;
while(cpt<=15){
               ChiffreHasard1(3,&x,&y,&i,&j,&k,10);cpt++}

le probleme c'est qui me redonne tjrs la meme suite par exemple i=2 j=1 x=1 y=1 pendant une bonne centaine d'ietration et apres il change

ce qui a pour consequence d'aumenter considerablement le temps por generer une grille
quelqu'un aurai t il une solution a mon probleme ? merci
ps: ceci n'est qu'une infime partit de mon code j'ai bien sur toute les entetes necessaire ^^"
A voir également:

2 réponses

Pierre-Antoine
26 mai 2007 à 16:49
Bonjour Kyky!
Bon, j'ai quelque chose qui pourrait t'interresser... J'ai rencontré la même difficulté que toi, rand() donne toujours les même suites de chiffres... Je me suis servi de la fonction time(NULL) qui me donne le nombre de secondes écoulées depuis le 1/1/70. Voici ma manière d'exploiter time(NULL):

{
int Nbsec, vali;
double valf;

NbSec = time(NULL); /* nombre de secondes écoulées depuis le 1/1/70 */
srand(NbSec); /*initialisation du générateur psudo-aléatoire*/
vali = rand (); /*un coup pour rien, le 1er n'est pas aléatoire*/

valf = rand()/(RAND_MAX + 1.0); /*nombre flottant compris entre 0.0 et 0.9999999*/
vali = (int)(valf * 10); /* nombre entier compris entre 0 et 9*/
}


Voila, maintenant j'espère que je ne te répond pas à coté de la plaque! Si tu ne comprends pas tout n'hésite pas !
0
Pierre-Antoine
26 mai 2007 à 16:53
j'allais oublié, fais attention aux librairies à utiliser. Tu dois avoir time.h et math.h je crois... Vérifie quand même !
0