Fonction rand()

Résolu
Flowneo Messages postés 88 Date d'inscription lundi 31 mars 2008 Statut Membre Dernière intervention 30 août 2012 - 2 déc. 2009 à 22:19
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 - 3 déc. 2009 à 00:01
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

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
3 déc. 2009 à 00:01
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;
}
3
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
2 déc. 2009 à 23:55
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.
0
Rejoignez-nous