Accueil > Forum > > > > Comment générer de très grand nombres aléatoires?
Comment générer de très grand nombres aléatoires?
jeudi 30 décembre 2004 à 19:01:28 |
Comment générer de très grand nombres aléatoires?

Erebus
|
Bonjour! J'ai un petit problème pour générer de grands nombres de manière aléatoire. J'utilise une portion d'un code-source posté sur ce site, mais les résultats sont inattendus, soit j'obtiens des nombres négatifs, soit j'obtiens (en bidouillant un peu sur les types de données et les signes) des nombres 10 000 fois trop grands . J'aurai besoin de générer des nombres compris entre deux bornes (minimal, et maximal), mais il y a plusieurs centaines de milliers entre les deux bornes ; par exemple entre 0 et 6 556 016 en début de programme puis l'écart s'élargit au fur et à mesure que le programme tourne (je créé un programme de modélisation d'une population importante - les turcs! - et je dois bientot rendre mon projet). J'avais penser générant plusieurs fois des nombres aléatoires sur des bornes moins espacés (additionner les 6 556 016 nombres aléatoire générés avec comme bornes 0 et 1), mais cela ne devient plus un nombre aléatoire mais une moyenne à cause de la Loi des grands nombres. Pourrait-on m'aider, s'il-vous-plait ?... merci
|
|
jeudi 30 décembre 2004 à 19:54:07 |
Re : Comment générer de très grand nombres aléatoires?

Gendal67
|
Euh, moi j'ai une tite solution, une fonction que j'ai crée moi même et que j'utilise quand j'ai besoin de nombres aléatoire quelconque... la voici :
DWORD GetRandomValue(DWORD dwMaxValue) {
if ((dwMaxValue % GetTickCount()) == 0) return dwMaxValue;
return GetRandomValue(dwMaxValue - 1); }
|
Gendal67, Dev-C++ 4.9.9.1, J'adore cppfrance!! :-))
|
|
jeudi 30 décembre 2004 à 20:08:59 |
Re : Comment générer de très grand nombres aléatoires?

vecchio56
|
'nombres aléatoire quelconque' oui quelconque, c'est justement le but, je me demande ce que seraient des nombres aléatoires non quelconques
2^32, ce n'est pas un très grand nombre ca...
|
|
jeudi 30 décembre 2004 à 20:28:52 |
Re : Comment générer de très grand nombres aléatoires?

plus_plus_fab
|
Réponse acceptée !
salut,
pour les nombres aléatoires, double(rand()) / RAND_MAX produit un nombre aléatoire entre 0 et 1. Apres tu multiplies, tu ajoutes pour cadrer la plage de nombre voulue. int srand(int) pour initaliser. Pour aller plus loin, voir la librairie boost qui propose de bons générateurs aléatoires.
|
|
jeudi 30 décembre 2004 à 20:36:35 |
Re : Comment générer de très grand nombres aléatoires?

Gendal67
|
vecchio> c'est 2^32 - 1 je crois plutot...et d'après la plage de nombres qu'il a donné en haut (regarde bien) : 0 à 6 556 016, ça colle sans probleme (un DWORD pouvant stocker des valeurs allant de 0 à 4 294 967 295)...
plus_plus_fab> bonne idée.....mais quelle est la précision retournée par rand() ? Parce que multiplier par un nombre la valeur retournée, c'est ingénieux si la précision est bonne, sinon cela ôte des possibilités...
ex :
rand() retourne 1.25 et double() multiplie par 1000, ça donne 1250 ... et là, comme la précision est mauvaise, la perte est importante car tu ne peux obtenir 1251, 1252, 1253, 1524, 1255, etc...
Gendal67, Dev-C++ 4.9.9.1, J'adore cppfrance!! :-))
|
|
jeudi 30 décembre 2004 à 20:39:03 |
Re : Comment générer de très grand nombres aléatoires?

Gendal67
|
vecchio> ''nombres aléatoire quelconque << oui, lol, désolé, j'ai ecore dit uen connerie ^^.... on va dire que "quelconque" signifie, "dans une plage donnée" ^^
Gendal67, Dev-C++ 4.9.9.1, J'adore cppfrance!! :-))
|
|
jeudi 30 décembre 2004 à 22:16:17 |
Re : Comment générer de très grand nombres aléatoires?

plus_plus_fab
|
rand();retourne un int entre 0 et RAND_MAX (défini par l'implémentation) ensuite on caste avec le type double, puis la division par RAND_MAX produit aussi un double. Donc au final, on a un double. La précision d'un double est connu, et a jesaispluscombien de chiffres significatifs, donc il ne faut pas aller au de la de la précision d'un double. Il y a long double, qui est un peu plus grand au cas ou ...
|
|
vendredi 31 décembre 2004 à 10:59:26 |
Re : Comment générer de très grand nombres aléatoires?

Erebus
|
merci déjà pour ces réponses.
Je voulais juste savoir avant de modifier l'ensemble de mon programme (qui fait quand même 1000 lignes sans compter les commentaire!), si la première solution postée par Gendal67 n'est pas un peu risquée?
Je sais que je ne connais pas grand chose à la programmation car je débute, (si j'ai pigé de travers, alors dsl!), mais est-ce que cela ne risque pas de surcharger la mémoire? Car il semble que ce soit une fonction récursive (encore dsl si je me plante!) et si je veux générer un nombre en 0 et 6 556 016 combien de fois sera appelée la fonction GetRandomValue(DWORD dwMaxValue)?
si je me trompe merci de me le dire et alors j'appliquerai cette solution.
|
|
vendredi 31 décembre 2004 à 11:49:16 |
Re : Comment générer de très grand nombres aléatoires?

Gendal67
|
Euh si, exactement en fait! ça risque de tourner un bon moment ^^ prend la méthode de plus_plus_fab ;) bonne journée
Gendal67, Dev-C++ 4.9.9.1, J'adore cppfrance!! :-))
|
|
vendredi 31 décembre 2004 à 12:07:14 |
Re : Comment générer de très grand nombres aléatoires?

Erebus
|
Et bien tout marche impécable (la perte de données n'est pas importante dans mon cas) !
Merci pour tout!
|
|
Cette discussion est classée dans : générer, nombres, bornes, grands, aléatoires
Répondre à ce message
Sujets en rapport avec ce message
générer des nombres aléatoires [ par mabrouka ]
Bonjour tout le monde , voici mon problème : je veux générer un ensemble de nombres aléatoires compris entre 0 et 1 en utilisant Générateur de type Mu
générer des nombres [ par norton ]
bonjour,j'ai un problème j'ai cheché dans les sources sur ce site quelque chose qui pourai m'aider mais certaines sources sont trop compexe pour moi,j
Multiplication de grands nombres [ par zekicker ]
Salut,Je voudrais savoir si qq1 connait une méthode pour effectuer une multiplication de grands nombres comme 467684700 *655000000. En effet, j'obtien
traviller avec de grands nombres [ par alfred289 ]
est-ce que quelqu'un aurait une façon simple de travailler avec de très grands nombres ( des miliers de chiffres par exemple)
nombres aléatoires en c++ [ par johanb ]
bonjour a tous, voici mon problême.Dans un programme, je dois générer deux fois un nombre aléatoire entre 0 et n (appelé max dans le programme). Voici
Nombres aléatoires et probabilités [ par Jepissedroitmoi ]
Salut !J'aurai besoin de générer des nombres aléatoires mais selon une loi de probabilité pour un jeu que je suis entrain de développer avec un collèg
class pour manipuler des grands nombres [ par Orkblutt ]
Salut,j'aimerai implementer une classe qui me permettrai de manipuler (+,-, /,*,%) des grands nombres (Nb>32bits) mais je ne sais pas du tout comment
Les nombres aléatoires en C++ (Visual C++ 6.0) [ par Yabo ]
Tout d'abord voilà le code :CODE #include #include #include #include using namespace std;void animstartscreen() { int n
librairie grands nombres ^ [ par coucou747 ]
Je dévelope en ce moment une librairie qui me permetrais de gérer des nombres de 1024 bits..Je ne fais que du C... Voici la sctructure qui contiendra
combinaisons avec des grands nombres [ par marieinthesky ]
Bonjour,j'ai besoin de calculer des arrangements et des combinaisons avec des nombres assez grands, tous mes essais de programmes marchent sur des pe
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|