Fonction random pas vraiment random

Fermé
mony84 Messages postés 68 Date d'inscription mercredi 19 juillet 2006 Statut Membre Dernière intervention 5 octobre 2010 - 23 mars 2010 à 10:42
scriptiz Messages postés 1424 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 14 septembre 2023 - 23 mars 2010 à 18:06
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 1424 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 14 septembre 2023 425
23 mars 2010 à 10:54
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 68 Date d'inscription mercredi 19 juillet 2006 Statut Membre Dernière intervention 5 octobre 2010 11
23 mars 2010 à 11:15
merci pour ta réponse.
j'utilise c++ comme langage de prgrammation
0
scriptiz Messages postés 1424 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 14 septembre 2023 425
Modifié par scriptiz le 23/03/2010 à 18:09
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