je cherche un generateur de variable pseudo alétoire uniforme entre 0 et 1
merci
je cherche un generateur de variable pseudo alétoire uniforme entre 0 et 1
merci
C'est quoi "uniforme" ? Cela veut dire quoi pour toi ?
sinon, rand() fournit un générateur pseudo aléatoire congruent.
Tu peux aussi regarder dans le chapitre 9 de Introduction à la Cryptographie qui traite des générateurs de nombres aléatoires.
Au fait, tu ne trouveras pas de générateurs de nombres réels entre 0 et 1. Tu trouveras des générateurs de nombres entiers dont les bornes sont connues et après, ce sera à toi de faire un changement de repère.
Raymond
Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi
CafuroCafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
e-verbeUn logiciel de conjugaison des verbes de la langue française.
Ma page personnelle sur DVP.
en fait je genere des variables aléatoires entre 0 et 1 qui est U et puisque je travail avec une loi exponentielle donc j'ai X=-1/lambda* log(U)
donc il me donne un resultat qui est #-inf
J'avoue, j'ai pas bien compris
Et tu ne réponds pas à ma question:
Sinon, quelques URL :
Raymond
Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi
CafuroCafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
e-verbeUn logiciel de conjugaison des verbes de la langue française.
Ma page personnelle sur DVP.
Ouai peut être sauf que si il descend très proche de zéro, les types primitifs le supporteront pas..
En prenant cette fonction de base tu dois arriver à faire un truc bien :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 float random( const float min, const float max) { return min + rand()/(float)RAND_MAX * ( max - min ); }
Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi
Ma page sur DVP
Mon Portfolio
Qui connaît l'erreur, connaît la solution.
Pseudo aléatoire, oui.
Oui mais est ce que c'est un générateur uniforme comme demandé ?
Raymond
Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi
CafuroCafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
e-verbeUn logiciel de conjugaison des verbes de la langue française.
Ma page personnelle sur DVP.
Bonjour,
FAQ et une doc de Jean-Marc Bourguet assez intéressante à lire.
Boost.Random propose aussi des choses.
Pour ton problème sur X=-1/lambda* log(U), l'origine n'est pas dans U mais dans log(U). Dès que ton tirage sur U va être petit, X va tendre vers l'infini -> d'où l'erreur du #-inf. Soit tu veux estimer ta moyenne et ta variance par du calcul 'bourrin' (somme/n et somme(ecart)/n) et alors il te faut passer par une librairie qui te permettent de gérer les grands nombres, soit tu creuse l'aspect mathématique pour trouver une autre méthode d'estimation.
Ressources proposées par 3DArchi - Les fonctions virtuelles en C++ - Cours et tutoriels C++ - FAQ C++ - Forum C++.
Utilise Boost.Random, ça fait tout proprement.
Raymond
Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi
CafuroCafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
e-verbeUn logiciel de conjugaison des verbes de la langue française.
Ma page personnelle sur DVP.
Sauf que son problème est d'estimer la moyenne et la variance d'une variable aléatoire qui suit une loi X= (-1/lambda)*log(U) avec lambda constante et U une variable aléatoire uniforme entre 0 et 1. Quelque soit le générateur qu'il utilise pour U, il va avoir des problèmes dès qu'il va faire un tirage avec u trop petit -> log(u) va dépasser.
A mon avis, il faut creuser sur les algos mathématiques d'estimation de moyennes et de variance et ne pas essayer de la calculer à partir de tirage.
Question bête : as-tu représenté ta courbe pour avoir au moins une idée intuitive de ce que tu cherches?
Ressources proposées par 3DArchi - Les fonctions virtuelles en C++ - Cours et tutoriels C++ - FAQ C++ - Forum C++.
Typiquement, rand, c'est un mersenne twister, donc uniforme.
Tu peux donner une implémentation qui soit typique d'après toi? Je doute que Windows ait un mersenne twister pour rand() -- son RAND_MAX à 32767 me fait penser à l'utilisation du générateur de la norme C, un par congruence linéaire dont on jette les bits de poids faibles -- et j'ai regardé les implémentions de Linux (congruence linéaire trafiqué), Solaris (qui a celui de la norme C) et FreeBSD (un par congruence linéaire). J'ai du mal à appeler typique quelque chose qui ne soit vrai sur aucune de ces plateformes.
Il me semblait que c'était un mersenne twister. C'est vraiment archi nul rand() du coup...
Partager