Nombre aléatoire dans variable
jenaipasdideepourlenomdutilisate
Messages postés
20
Statut
Membre
-
jenaipasdideepourlenomdutilisate Messages postés 20 Statut Membre -
jenaipasdideepourlenomdutilisate Messages postés 20 Statut Membre -
Bonjour,
Je cherche le moyen de mettre un nombre aléatoire (disons entre 1 et 500) dans une variable qui s’appellera "a".
Est-ce possible (je pense que oui : je ne suis pas désespéré à se point) ?
merci de vos réponses
Je cherche le moyen de mettre un nombre aléatoire (disons entre 1 et 500) dans une variable qui s’appellera "a".
Est-ce possible (je pense que oui : je ne suis pas désespéré à se point) ?
merci de vos réponses
2 réponses
-
Salut,
La fonctionrand()
existe en C. Elle génère des nombres pseudo-aléatoires sous forme d'entier entre 0 et RAND_MAX.
Une façon simple d'obtenir un nombre entre 1 et 500, par exemple, est de faire comme cela :
int nombre = rand() % 500 + 1;
Avant de l'utiliser, il faut initialiser le générateur de nombres avecsrand()
, sinon, le générateur va toujours sortir la même séquence de nombres. Une façon de l'initialiser est de lui passer en paramètre le résultat de la fonctiontime(NULL);
qui renvoie un type entier représentant la date et l'heure actuelle à la seconde près.
Par exemple, le code suivant génère 10 nombres entre 1 et 500 :
#include <stdio.h> #include <stdlib.h> #include <time.h> int main(void) { int nombre; /* initialisation */ srand(time(NULL)); /* générer 10 nombres compris entre 1 et 500 */ for (int i = 0; i < 10; i++) { nombre = rand() % 500 + 1; printf("%d ", nombre); } printf("\n"); return 0; }
Références :
http://www.cplusplus.com/reference/cstdlib/srand/
http://www.cplusplus.com/reference/cstdlib/rand/
http://www.cplusplus.com/reference/ctime/time/
Dal-
-
Là l'intervalle est de 1 à 500. Tu fais varier le minimum en modifiant le "+ 1" et le maximum sera l'addition du minimum et du reste de la division entière du nombre produit par
rand()
avec l'autre nombre (ici 500, qui donne un reste de 0 à 499).
rand()
peut produire un nombre de0
àRAND_MAX
, qui, selon le standard du C doit valoir au moins32767
. Tu peux afficher la valeur deRAND_MAX
(qui est une constante définie par une macro dansstdlib.h
) pour ton implémentation du C, qui sera certainement supérieure, en faisant :
printf("pour ce compilateur RAND_MAX = %llu\n", (unsigned long long int) RAND_MAX); -
un
printf("%d\n", RAND_MAX);fonctionne aussi sur ma machine avec un compilateur GNU C, où RAND_MAX et INT_MAX sont les mêmes
les limites des types entiers sont accessibles par l'entête standardlimits.h
:
http://www.cplusplus.com/reference/climits/ -
-
Il y a de nombreuses années que je n'ai pas utilisé DevC++, qui a connu un développement assez chaotique .. cela dit, dans ta capture, je ne vois pas de message d'erreur, juste une ligne marquée en rouge.
Le code fournit est du code valide en C99 (la révision du standard du C datant de 1999), qui permet la déclaration de variables dans la boucle for. Si ton compilateur est ancien, ne supporte pas C99, ou que tu ne veux pas faire du code C99 (c'est un peu dommage, mais tu as peut-être de bonnes raisons), tu peux écrire à la place de :
for (int i = 0; i < 10; i++) {
les deux lignes suivantes :
int i; for (i = 0; i < 10; i++) {
Sinon, je n'ai pas de "solution" autre tant que tu ne donnes pas un vrai message d'erreur.
Dal
-
-
