Hasard

Soyez le premier à donner votre avis sur cette source.

Snippet vu 6 742 fois - Téléchargée 36 fois

Contenu du snippet

Comment obtenir un nombre entier compris entre deux nombres? Réponse ici très simplement.

Source / Exemple :


#include <stdlib.h>  //les trois en-têtes.
#include <stdio.h>   //si vous utilisez Borland C++ Builder,
#include <time.h>   //ne vous souciez pas de ceci, builder le fait pour vous
     //ce doit être pareil pour d'autres éditeurs.
-------------------------------------------------------------------------

//A l'exécution du programme, mais attention UNE SEULE FOIS par exécution, exécuter la fonction randomize:

  randomize();

//Prenez garde à ne pas l'inclure dans une boucle! Juste au début du programme, avant toute chose, par exemple la première instruction de la fonction main().
//Ensuite, pour obtenir un nombre au hasard, la fonction random:

  random(x); //retourne un entier allant de 0 à x-1, 0 et x-1 compris.

//Cette fonction-ci peut être exécutée autant que voulu par exécution, mais seulement après randomize().

Conclusion :


Voilà! L'en-tête time.h sert à la fonction randomize qui fonctionne avec avec l'horloge système si j'ai bien compris, ce qui explique pourquoi il faut initialiser randomize() une seule fois par exécution du programme, sinon les nombres sont plus souvent identiques. Faites le test avec un bouton qui au click donne un nombre entre 0 et 100 mais qui effectue randomize() à chaque exécution. C'est assez concluant ^^

A voir également

Ajouter un commentaire

Commentaires

cs_Kirua
Messages postés
3006
Date d'inscription
dimanche 14 avril 2002
Statut
Membre
Dernière intervention
31 décembre 2008

Plutôt 16 que 15.
cs_Kirua
Messages postés
3006
Date d'inscription
dimanche 14 avril 2002
Statut
Membre
Dernière intervention
31 décembre 2008

c'est <<, pas >>.

ça donnerait:

int r1 = rand();
int r2 = rand();
int r = r1 << 15 + r2;

ça ça peut marcher, j'imagine.
coucou747
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
30
rectification de mon code :
rand()>>15+rand()/(MAXRAND+MAXRAND>>15)-1 ?
tu as parlé d'un nombre entre -1 et 0...
regardes :
rand() tient sur 15 bits, donc, rand>>15+rand tient sur 30 bits, et est corect niveau répartition.... (>>n est un décalage de n bits)
dans un générateur de nombres aléatoires, on prend souvent les bits un par un...
cs_Kirua
Messages postés
3006
Date d'inscription
dimanche 14 avril 2002
Statut
Membre
Dernière intervention
31 décembre 2008

rien compris :/
coucou747
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
30
la encore ça dépend de ce que tu veux faire...

rand()>>15+rand()/MAXRAND/MAXRAND-1 ?
Afficher les 32 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.