Random?????
David
-
hibougenoucayou -
hibougenoucayou -
Slt a tous ^^
Apres mon pb de tempo ki a finalement etait resolu grace o personne sur ce forum que je remercie.
Mais g un nouveau petit soucie ,je n'arrive pas a utiliser le random
sur vc++ pour creer un nb aleatoir de 1 a 5 si c possible
Merci d'avance
Apres mon pb de tempo ki a finalement etait resolu grace o personne sur ce forum que je remercie.
Mais g un nouveau petit soucie ,je n'arrive pas a utiliser le random
sur vc++ pour creer un nb aleatoir de 1 a 5 si c possible
Merci d'avance
24 réponses
- 1
- 2
Suivant
-
Je connais pas le c++, mais d'habitude un random crée un nombre aléatoire de 0 à 1. Alors pour avoir un nb aléatoire de 1 à 5, tu fais: [4*Random+1]
-
Salut,
bon voici un bout de code commanté pour faire une nombre aleatoire (enfin pseudo aleatoire)#include <stdio.h> #include <stdlib.h> void main () { unsigned int i, randInit; randInit = 0; //variable a modifier printf("genration de nombre aleatoire (rand) avec %d\n",randInit); srand(randInit); //on gener 10 nombres now for (i=0; i<10; i++) { printf("rand()=%d \n",rand() ); } //bon en testant tu remarquera que les nombre sont enorme mais la solutions pour garantir //qu ils soient compris entre 0 et 5 a mon avis: //c'est de rajouter nombre=rand()/10000 avec nombre entier si le resultat est superireur a //5 et bien tu recommence... }
si tu as des questions.... -
-
Salut, je crois qu'il y a une constante MAXRAND (ou qqch comme ca) dans le c++ qui te génère des nb aléatoire entre 0 et MAXRAND.
Fais qqch du genre :
const MAXRAND=5;
pom -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
si ma memoire est bonne MAXRAND est déja defini est correspond au nombre max renvoyé par rand();
il faut faire
nb_alea=(int)rand()*5/RANDMAX -
Resultat de vos proposition ^^
pour canard007 ton programme marche mais je ne sais pas où mettre nombre=rand()/10000 avec nombre entier et si il faut q je l'ecrit comme toi.
pour pom ton instruction marche mais donne des chiffres immense du style41 , 18467 etc . Ton instruction je l'ai mis avant le for du programme de cannard007 tout en enlevant randInit et srand
pour pierre ton instruction marche pas a moins qu'il faut rajouter qqchose o programme ou en enlever
Merci de m'aider c vraiment sympas ;) -
error C2065: 'MAXRAND' : undeclared identifier
error C2065: 'RANDMAX' : undeclared identifier
vous la prenez ou votre constante?? -
o fait pour const maxrand=5 je pe remplacer 5 par n'importe quel chiffre ca ne change a rien :s
-
-
fo pas virer srand(nombre) car si tu fait juste rand() tu aura toujours le meme nombre au debut...
l ideal c est de prendre un chiffre qui bouge style le nombre de secondes pour faire le randInit.
Si tu regarde bien les nombres tu te rendra compte qu'il n y a rien d aleatoir tu aura toujours les meme nombre pour le meme randinit..
Donc le mieux a faire c est de recuperer par exemple la date system en seconde (par exemple) et dire randinit= cette date...
ensuite tu prend toujours le n éme chiffre generé (tu peux augmenter l aleatoire en choissisant en fonstion des secondes par exemple) ...
donc tu aura ensuite un nombre compris entre 0 et 64000 (apparement) don ya plus qu a faire une conversion pour les faire passer entre 1 et 5 la c est des maths ^^
..cependant je vais vois sur le net s'il n'y a pas plus simple... -
srand(time(NULL));
c'est bien pour initialiser il fo ^pas oublier #include"time.h" -
Je n'ai pas beaucoupe fais de c++, mais comme canard dit: il faut prendre un nombre basé sur les secondes.
En fait presque tous les autres langages prennent un nombre basé sur le temps automatiquement, mais on ne le vois pas. -
bon ba finallement je l aurai fait..j suis trop bon...
ca marche ca ca te donne un nombre aleatoir compris entre 1 et 5
t a juste a le modifier pour en faire une fonction...#include <stdio.h> #include <stdlib.h> #include <time.h> void main( ) { int Chiffre; int Marge=5; srand ((unsigned) time (NULL)); Chiffre = (rand()+1) % Marge; printf("%d\n",Chiffre); } -
-
canard007 effectivement t trop fort :)
est ce q tu pe m'expliquer les lignes chiffre et srand stp
merci d'avance -
regarde mon code ca roule ca marche il est bon mon code qui n en veut?
-
Je sais qu'il marche mais ce q je ve savoir c la signification ou le commentaire de la ligne srand((unsigned) time (NULL)) et la ligne chiffre = (rand()+1) % Marge car je ne les comprend pas
merci d'avance ^^ -
srand () permet d initialiser la fonction rand... il fo lui passer un entier non signé..
Time(NULL) te renvoie la date machine comme elle bouche tout le temps
rand()+1 pour avoir un resultat superieur a 0 et enfin %marge c est comme un modulo grosso modo tu lui donne la taille max du nombre.. -
^^merci grace a toi je connai les instruction rand et tempo ce ke je n arrivai pa a utilisai maintenant je pe realiser presque n'importe quel programme je crois et au autre bien sur.
-
Je garde ton code Canard007. Je vais surement m'en servir un jour ou l'autre. Mais concernant la constante RAND_MAX (je suis sur qu'il existe une constante qui porte ce nom la), je crois qu'elle doit servir à tirer des nb aléatoires entre 0 et RAND_MAX. Je crois (je me rappelle l'avoir utilisée dans un TP) que c'est une constante déjà définie par le compilateur.
Et savez-vous si le tirage des nb aléatoires est uniformément répartis (entre 0 et 5 par exemple) ?
pom
- 1
- 2
Suivant