[Langage C] Générer nombre aléatoire
Résolu
DaddY
-
Stephanoss -
Stephanoss -
Voila, je voudrais générer un nombre compris entre 0 et 4 (valeurs possibles : 0,1,2,3,4) que je stockerai dans une variable "nbr".
Je pense qu'il faut utiliser la fonction rand() ou srand() mais je ne comprends pas grand chose aux explications que j'ai trouvées sur le net...
Comment faire ?
Je pense qu'il faut utiliser la fonction rand() ou srand() mais je ne comprends pas grand chose aux explications que j'ai trouvées sur le net...
Comment faire ?
A voir également:
- Aléatoire en c
- Tirage au sort excel aléatoire sans doublon ✓ - Forum Excel
- Vlc lecture aléatoire - Forum Téléphones & tablettes Android
- Lecture aléatoire VLC - Forum Lecteurs et supports vidéo
- Comment désactiver le mode aléatoire sur VLC? - Forum Lecteurs et supports vidéo
- Diaporama aléatoire windows 10 - Forum Windows 7
5 réponses
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
int Random (int _iMin, int _iMax)
{
return (_iMin + (rand () % (_iMax-_iMin+1)));
}
int main (void)
{
int iRandom;
srand (time (NULL));
iRandom = Random (50,100);
printf ("Random : %d", iRandom);
getch();
return 0;
}
----
Y'a des jours où il faut pas m'chercher.
Et y'a des jours tous les jours.
#include <stdlib.h>
#include <time.h>
#include <conio.h>
int Random (int _iMin, int _iMax)
{
return (_iMin + (rand () % (_iMax-_iMin+1)));
}
int main (void)
{
int iRandom;
srand (time (NULL));
iRandom = Random (50,100);
printf ("Random : %d", iRandom);
getch();
return 0;
}
----
Y'a des jours où il faut pas m'chercher.
Et y'a des jours tous les jours.
la fonction rand() te donne des valeurs aléatoires
le probleme cest de l'utiliser dans un intervalle petit !
il faut utiliser modulo % pour réduire lintervalle
ex
int alea;
alea = rand() %10;
srand( time(NULL)); est utilisé au début pour avoir des valeurs aléatoires vraies
le probleme cest de l'utiliser dans un intervalle petit !
il faut utiliser modulo % pour réduire lintervalle
ex
int alea;
alea = rand() %10;
srand( time(NULL)); est utilisé au début pour avoir des valeurs aléatoires vraies
Déjà la notion de nombre aléatoire au sens le plus strict du terme n'existe pas en programmation.
On parle de génération de nombres pseudo-aléatoires.
Si tu regardes le liens MS:
https://www.microsoft.com/en-us/download/details.aspx?id=55979
On remarque que la procédure d'init passe par un paramètre qui sert à définir le 'point de départ' de ta série de chiffres.
Pour une racine donnée, tu obtiendras toujours la même liste de chiffres (ce qui peut être pratique en DEBUG).
Donc sur ce lien :
https://www.microsoft.com/en-us/download/details.aspx?id=55979
srand( (unsigned)time( NULL ) );
Permet d'initialiser le compter à partir de l'horloge
rand()
Te permets donc de générer un nombre sur l'intervalle [0..RAND_MAX[
Le modulo (%) te permet de limiter à un intervalle plus petit.
int i = rand () %5;
Donnera une valeur sur l'ensemble [0..4] (ou [0..5[ comme tu préfère au niveau de l'écriture ;p)
On parle de génération de nombres pseudo-aléatoires.
Si tu regardes le liens MS:
https://www.microsoft.com/en-us/download/details.aspx?id=55979
On remarque que la procédure d'init passe par un paramètre qui sert à définir le 'point de départ' de ta série de chiffres.
Pour une racine donnée, tu obtiendras toujours la même liste de chiffres (ce qui peut être pratique en DEBUG).
Donc sur ce lien :
https://www.microsoft.com/en-us/download/details.aspx?id=55979
srand( (unsigned)time( NULL ) );
Permet d'initialiser le compter à partir de l'horloge
rand()
Te permets donc de générer un nombre sur l'intervalle [0..RAND_MAX[
Le modulo (%) te permet de limiter à un intervalle plus petit.
int i = rand () %5;
Donnera une valeur sur l'ensemble [0..4] (ou [0..5[ comme tu préfère au niveau de l'écriture ;p)
merci ...
mai donc si je comprend bien
srand( (unsigned)time( NULL ) );
appeler a chaque debut dexecution, permet de sassurer que la liste de chiffre obtenue soi tjr la meme a chaque execution (car lintervalde temp entre srand et chaque rand sera tjr la meme) me trompe-je ?
et si on n'apel pas srand, sur kel point de depart se base le rand alors ?
mai donc si je comprend bien
srand( (unsigned)time( NULL ) );
appeler a chaque debut dexecution, permet de sassurer que la liste de chiffre obtenue soi tjr la meme a chaque execution (car lintervalde temp entre srand et chaque rand sera tjr la meme) me trompe-je ?
et si on n'apel pas srand, sur kel point de depart se base le rand alors ?
en gros le code :
srand( (unsigned)time( NULL ) );
est appelé une fois au début de ton programme afin d'initialiser des listes de chiffres différentes.
Si tu veux utiliser toujours la même liste, il faut juste passer en paramètre à srand() une constante.
par la suite tu ne fais que des appels à rand ().
le fait d'appeler rand() n'est en rien lié à un intervalle de temps par la suite. L'utilisation du timer pour l'initialisation sert juste à définir une base pour la génération de nombres pseudo aléatoires.
en debug (et si tu n'utilise pas l'init avec time()) il utilise un nombre qui est généralement toujours le même ce qui fait qu'en debug ta série de chiffres générée peut être identique à chaque lancement.
cette fonctionnalité peut être voulue afin de reproduire un bug particulier.
srand( (unsigned)time( NULL ) );
est appelé une fois au début de ton programme afin d'initialiser des listes de chiffres différentes.
Si tu veux utiliser toujours la même liste, il faut juste passer en paramètre à srand() une constante.
par la suite tu ne fais que des appels à rand ().
le fait d'appeler rand() n'est en rien lié à un intervalle de temps par la suite. L'utilisation du timer pour l'initialisation sert juste à définir une base pour la génération de nombres pseudo aléatoires.
en debug (et si tu n'utilise pas l'init avec time()) il utilise un nombre qui est généralement toujours le même ce qui fait qu'en debug ta série de chiffres générée peut être identique à chaque lancement.
cette fonctionnalité peut être voulue afin de reproduire un bug particulier.
heu ce serait pas abusé à ce stade ?
mon post (n°2) indique tout le code pour en générer un de façon propre en Langage C.
Si tu ne sais pas faire une simple boucle, prend la doc' on ne va pas faire tes exercices de cours à ta place ;p
++
Vincent
mon post (n°2) indique tout le code pour en générer un de façon propre en Langage C.
Si tu ne sais pas faire une simple boucle, prend la doc' on ne va pas faire tes exercices de cours à ta place ;p
++
Vincent
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
je doit genener des nbres aleatoires de 1 à 20 (inclus), et je doit afficher des combinaison de 8 chiffre (sans simillitude, et des combinaison differente (nutilisant pas les meme chiffre)(ex :1,2,3,4,5,6,7,8; je ne veux pas 1,2,4,3,6,5,8,7);
tu vois ce que je veux dire il ne faut pas k'il reutlise les memes chiffre melanger );
il me demande d'afficher le nbre de combinaison possible, mais le probleme c'est quand j'affiche le resultat d'execution sa s'arrette a 12 combinaison alors que je sais qu'il y en a plein.
je comprend pas ?
en + j'ai fait une boucle for de fassons a avoir 250 combinaison a afficher.
merci e me repondre dansles plus bref delai ...
d'autre part, il est d'usage d'ouvrir un nouveau topic pour ce type de question.
et pour finir, pour prouver que tu as bossé un minimum, il est appréciable que tu publie au moins ton code.
++