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) :
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 ...