Fonction random pas vraiment random

mony84 Messages postés 75 Statut Membre -  
scriptiz Messages postés 1494 Statut Membre -
bonjour,

j'ai ce bout de code pour générer la position (x,y) initiale des plusieurs noeuds dans un réseau de télécom.
for (i=0;i<NETWORK_SIZE;i++){
  TheNetwork.nodes[i].pos_x = (float)(random() % FIELD_SIZE_X);
  TheNetwork.nodes[i].pos_y = (float)(random() % FIELD_SIZE_Y);
   }
   


je ne comprends pas pourquoi j'obtiens toujours les mêmes valeurs (383 ,886) , alors que c'est supposé être une fonction donnant des valeurs aléatoires.
A voir également:

1 réponse

scriptiz Messages postés 1494 Statut Membre 425
 
Générallement il faut initialiser le randomizer sans quoi il est souvent initialiser à une valeur par défaut et donc il te tire la même suite de nombre "aléatoires".

Une bonne façon de faire c'est d'initialiser le randomizer sur le timestamp actuel (nombre de secondes écoulées depuis le 1er janvier 1970 dans la plupart des cas).

Après je ne sais pas quel langage tu utilises mais une recherche sur google te donnera plus d'infos pour initialiser ton randomizer avant d'appeller la méthode random().
1
mony84 Messages postés 75 Statut Membre 11
 
merci pour ta réponse.
j'utilise c++ comme langage de prgrammation
0
scriptiz Messages postés 1494 Statut Membre 425
 
Avec plaisir, en C++ tu peux utiliser srand( time( NULL ) ); pour initialiser le randomizer et ainsi avoir des suites de nombres aléatoires différentes d'une exécution à l'autre.

Exemple d'un petit programme :
/* rand example */    
#include <stdio.h>    
#include <stdlib.h>    
#include <time.h>    

int main ()    
{    
  int number;    

  /* initialize random seed: */    
  srand ( time(NULL) );    

  /* generate a random number: */    
  number = rand() % 10 + 1;    

  /* here you may do your stuff with the random number */    

  return 0;    
}


N'oublie donc pas le #include <time.h> car on s'en sert pour initialiser le randomizer dans la fonction srand() ;)

Bonne continuation.
0