Rand
fille gl
-
overcode Messages postés 128 Statut Membre -
overcode Messages postés 128 Statut Membre -
Bonjour,
j'ai fait un boucle dans lequel je veux remplir deux matrices aléatoirement; j'ai remarqué que malgrè que j'ai utiliser srand, que la boucle tourne les memes valeurs seront attribués!
voilà la partie du programme:
public:void saisie(int n)
{
int i,j;
for(i=0;i<n;i++)
{
float t=0;
srand(time(NULL));
for(j=0;j<n;j++)
{
t=rand();
delete &t;// initialisation de rand
M1[i][j]=rand();
// initialisation de rand
M2[i][j]=rand();
}
}
}
j'ai fait un boucle dans lequel je veux remplir deux matrices aléatoirement; j'ai remarqué que malgrè que j'ai utiliser srand, que la boucle tourne les memes valeurs seront attribués!
voilà la partie du programme:
public:void saisie(int n)
{
int i,j;
for(i=0;i<n;i++)
{
float t=0;
srand(time(NULL));
for(j=0;j<n;j++)
{
t=rand();
delete &t;// initialisation de rand
M1[i][j]=rand();
// initialisation de rand
M2[i][j]=rand();
}
}
}
1 réponse
Bonsoir,
C'est atroce ce que je vois dans ce code ... très probablement du C++, mais mentionné nul part :S
Bon, rand() n'est pas très pratique, et son comportement n'est que vaguement défini. rand() doit retourner à chaque appel un nombre aléatoire entre 0 et RAND_MAX, cette dernière constante étant définie dans stdlib.h. Elle vaut généralement 32767.
Voilà une proposition :
Si les matrices sont supposées contenir des entiers (entre 0 et 99) :
Si les matrices sont supposées contenir des réels (compris entre -10 et 10)
PS : je vois pas l'utilité de passer la taille n à la méthode saisie, tu peux la mettre en tant que membre tout comme M1 et M2. Enfin je dis ça comme ça ...
C'est atroce ce que je vois dans ce code ... très probablement du C++, mais mentionné nul part :S
Bon, rand() n'est pas très pratique, et son comportement n'est que vaguement défini. rand() doit retourner à chaque appel un nombre aléatoire entre 0 et RAND_MAX, cette dernière constante étant définie dans stdlib.h. Elle vaut généralement 32767.
Voilà une proposition :
Si les matrices sont supposées contenir des entiers (entre 0 et 99) :
public :
void saisie(int n)
{
srand(time(NULL)) ;
for(int i = 0 ; i < n ; i++ )
{
for(int j = 0 ; j < n ; j++ )
{
M1[i][j] = rand() % 100 ;
M2[i][j] = rand() % 100 ;
}
}
}
Si les matrices sont supposées contenir des réels (compris entre -10 et 10)
public :
void saisie(int n)
{
srand(time(NULL)) ;
for(int i = 0 ; i < n ; i++ )
{
for(int j = 0 ; j < n ; j++ )
{
M1[i][j] = float((rand() % 2001) - 1000) / 100 ;
M2[i][j] = float((rand() % 2001) - 1000) / 100 ;
}
}
}
PS : je vois pas l'utilité de passer la taille n à la méthode saisie, tu peux la mettre en tant que membre tout comme M1 et M2. Enfin je dis ça comme ça ...