Fonction rand() [Résolu]

Signaler
Messages postés
88
Date d'inscription
lundi 31 mars 2008
Statut
Membre
Dernière intervention
30 août 2012
-
Messages postés
3839
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
15 avril 2021
-
Bonjour,

voila, je voudrais faire une fonction (ou procédure) qui génére par exemple 4 lettre que je placerais dans un tableau, j'ai regardé les référence du rand et j'ai vu comment faire pour générer 1 nombre mais pas pour générer des caractéres aléatoirement, comment-pourrais-je faire ? ? ? merci à ceux qui vont m'aider !

2 réponses

Messages postés
3839
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
15 avril 2021
121
Plusieurs solutions.

Tu sais que les caractères sont en fait des nombres, en C. Les caractères intéressant a afficher ont des valeurs allant de 40 à 176.

Donc tu génère un rand compris entre 40 et 176, que tu convertis en char.

Ex:
#include <stdio.h>

/*!
** Get a random number between from and to
**
** @param from Range begin
** @param to Range end
**
** @return A random number
*/
int rangeRand(int from, int to)
{
  return rand () % (to - from + 1) + from;
}

int main(void)
{
  char c[5] = {0}; /* Une case en plus pour le 0 terminal */
  int i = 0;
  srand(time(0));

  for (i = 0; i < 4; ++i)
    c[i] = rangeRand(40, 176);

  printf("%s\n", c);

  return 0;
}

Ou alors, tu génères un tableau de caractères dans lequel tu mets tout ce qu'il te plait, et tu génères la position:
#include <stdio.h>
#include <string.h>

const static char tab[] = "abcdefghiklmnopqrstuvxyz0123456789";

/*!
** Get a random number between from and to
**
** @param from Range begin
** @param to Range end
**
** @return A random number
*/
int rangeRand(int from, int to)
{
  return rand () % (to - from + 1) + from;
}

int main(void)
{
  char c[5] = {0};
  int i = 0;
  int size = strlen(tab);
  srand(time(0));

  for (i = 0; i < 4; ++i)
    c[i] = tab[rangeRand(0, size - 1)];

  printf("%s\n", c);

  return 0;
}
Messages postés
1309
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
5 juin 2013
12
Salut,

Un caractère n'est qu'un nombre. Il existe plusieurs jeux de caractères possibles pour associer un nombre à un caractère, tu peux te servir de l'ASCII sans soucis pour cela, il faudrait ne vraiment pas avoir de chance pour devoir supporter l'EBCDIC et autres jeux de caractères de ce genre.