Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1731 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Génération d'un nombre aléatoire entre 0 et 2^31-1 sous Visual C++ 6.0

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Génération d'un nombre aléatoire entre 0 et 2^31-1 sous Visual C++ 6.0

n°989873
nathan_g
Posté le 22-02-2005 à 15:11:06  profilanswer
 

Bonjour,
 
j'ai déja posé des questions très similaires sur ce forum mais je rencontre toujours les mêmes difficultées à utiliser Visual C++ 6.0.  
Actuellement, j'utilise la fonction rand() pour générer des entiers aléatoires (pseudo-aléatoires pour les puristes) entre 0 et 32767, la valeur de RAND_MAX dans mon compilateur. Or, cela ne me suffit pas, car je voudrais pouvoir aller jusqu'à 2147483647 pour RAND_MAX (valeur de 2^31-1).
Ma question est donc de savoir s'il existe dans Visual C++ 6.0 une option de compilation permettant de changer RAND_MAX pour générer des nombres sur un interval plus important.
 
Autre méthode, prendre (RAND_MAX+1)*rand() + rand() comme nombre. Mais cette méthode ne me parait pas propre.
 
Merci de votre aide !

mood
Publicité
Posté le 22-02-2005 à 15:11:06  profilanswer
 

n°989899
Taz
bisounours-codeur
Posté le 22-02-2005 à 15:25:57  profilanswer
 

il faut soit que tu utilise une bibliothèque extérieure, soit que tu écrives un vrai générateur aléatoire toi même.
 
RAND_MAX est invaraible sur ton système
et
(RAND_MAX+1)*rand() + rand() est la pire des solutions, rand_i() et rand_i+1() étant très fortemenent lié (rand_i+1() est obtenu en fonction de rand_i())

n°989913
nathan_g
Posté le 22-02-2005 à 15:32:52  profilanswer
 

OK
 
(RAND_MAX+1)*rand() + rand() est la pire des solutions, rand_i() et rand_i+1() étant très fortemenent lié (rand_i+1() est obtenu en fonction de rand_i())
 
=> En fait, je crois que c'est plus compliqué car on doit également considérer les entiers i-1, i-2 ... Mais il existe certainement un biais non nul entre les deux valeurs.
IL faudrait, à la rigueur, calculer l'importance de ce biais avant d'utiliser ce genre de commande.
 
Ma question était principalement sur la possibilité de modifier RAND_MAX. Merci de ta réponse.

n°989917
Taz
bisounours-codeur
Posté le 22-02-2005 à 15:36:26  profilanswer
 

[quote=989913,0,3,148002] En fait, je crois que c'est plus compliqué car on doit également considérer les entiers i-1, i-2 ... Mais il existe certainement un biais non nul entre les deux valeurs.
[/quote]ne compte pas dessus, la pluspart des implémentation, c'est du genre
 
next = last * X + Y;
last = next;
return next;

n°990078
nathan_g
Posté le 22-02-2005 à 16:38:16  profilanswer
 

Oui, mais j'ai fait le test (au moins sous g++ 3.3.2). Avec ce compilateur la méthode rand() doit être plus évoluée car lorsque deux valeurs identiques sortent lors de deux appels distincts, les valeurs suivantes sont cependant différentes.
 
Apparemment la méthode rand() a évolué depuis les premières implémentations qui devaient se baser sur des formules du type de celle que tu donnes.

n°990081
Taz
bisounours-codeur
Posté le 22-02-2005 à 16:40:26  profilanswer
 

man srand

n°990091
nathan_g
Posté le 22-02-2005 à 16:52:09  profilanswer
 

Oui, mais ca ne dit pas grand chose de l'implémentation de ces fonctions. On a juste un renvoi vers le Num. Rec. pour plus d'infos.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Génération d'un nombre aléatoire entre 0 et 2^31-1 sous Visual C++ 6.0

 

Sujets relatifs
Debogage Visual Studio C#.NetConnaître le nombre de champ envoyé par un formulaire
Génération de CSVdebuggage dans une dll (sous visual 7)
visual C++ comment ça marche?[Visual 2003] Compilation d'un exécutable
Génération de script de base de donnéesPlantage en touts genre avec Visual C++
génération de tableaux et de lignesSurcharge de template et visual C++ .NET
Plus de sujets relatifs à : Génération d'un nombre aléatoire entre 0 et 2^31-1 sous Visual C++ 6.0


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR