Menu

Nombre aléatoire dans variable

Messages postés
7
Date d'inscription
lundi 25 mars 2019
Statut
Membre
Dernière intervention
11 mai 2019
- - Dernière réponse : [Dal]
Messages postés
5094
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
14 mai 2019
- 14 mai 2019 à 14:46
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
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
Messages postés
5094
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
14 mai 2019
937
2
Merci
Salut,

La fonction
rand()
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 avec
srand()
, 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 fonction
time(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

Dire « Merci » 2

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 39235 internautes nous ont dit merci ce mois-ci

cool c'est ce que je recherchait aussi !
Et il marche sans plafond (nombre max ou min ) ?
[Dal]
Messages postés
5094
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
14 mai 2019
937 -
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 de
0
à
RAND_MAX
, qui, selon le standard du C doit valoir au moins
32767
. Tu peux afficher la valeur de
RAND_MAX
(qui est une constante définie par une macro dans
stdlib.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);
[Dal]
Messages postés
5094
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
14 mai 2019
937 -
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 standard
limits.h
:

http://www.cplusplus.com/reference/climits/
Commenter la réponse de [Dal]
Messages postés
39
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
11 mai 2019
11
jenaipasdideepourlenomdutilisate
Messages postés
7
Date d'inscription
lundi 25 mars 2019
Statut
Membre
Dernière intervention
11 mai 2019
-
merci je suis allé sur le lien mais il y a beaucoup de "mais il peut y avoir des risque de ..." En gros, ces méthodes ne fonctionnent pas dans tout les cas.
N'y existe-il pas une ligne de code du style rand() ou intrandom() qui puisse etre utilisé pour définire une variable ?
Commenter la réponse de lugdanum