Combiner des chiffres aléatoirement c++ [Résolu]

Messages postés
90
Date d'inscription
samedi 5 juin 2010
Statut
Membre
Dernière intervention
6 mars 2015
- - Dernière réponse : BunoCS
Messages postés
14685
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
12 décembre 2019
- 27 janv. 2011 à 09:11
bonjour,
supposant que j'ai un ensemble de chiffres/ou nombres entiers (1 - 4 - 8 - 10 - 12) que je veux combiner aléatoirement pour avoir n combinaisons.
ya-t-il une fonction qui accepte comme paramètre ces chiffres/nombres et le nombre de combinaisons voulu n.
autrement dit et plus simplement ya-t-il une fonction qui combine des chiffres/nombres aléatoirement.
j'espère que vous pouvez m'aider à résoudre mon problème.
Afficher la suite 

8 réponses

Meilleure réponse
Messages postés
14685
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
12 décembre 2019
90
3
Merci
La fonction rand te permet d'avoir un nombre pris "aléatoirement" entre 0 et MAX (max à définir)

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Rejoignez mon réseau professionnel sur Viadeo

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 191 internautes nous ont dit merci ce mois-ci

Commenter la réponse de BunoCS
Messages postés
14685
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
12 décembre 2019
90
3
Merci
il faut:
- soit appeler srand() une seule fois (dans ton main, quoi)
- soit le laisser dans ta fonction mais lui passer un argument variable

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Rejoignez mon réseau professionnel sur Viadeo

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 191 internautes nous ont dit merci ce mois-ci

Commenter la réponse de BunoCS
Messages postés
14685
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
12 décembre 2019
90
0
Merci
Hello,
Non, une telle fonction n'existe pas. Il va falloir que tu la développe toi-même.

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Rejoignez mon réseau professionnel sur Viadeo
Commenter la réponse de BunoCS
Messages postés
90
Date d'inscription
samedi 5 juin 2010
Statut
Membre
Dernière intervention
6 mars 2015
0
Merci
merci bien pour l'information,
j'ai développé une fonction qui qui fait toutes les combinaisons possibles, mais ce programme prend des heures dans l'exécution si l'entrée est grande par exemple 100 chiffres.
c'est pourquoi j'ai voulu faire des combinaisons aléatoires et je me limite à un certain nombre de combinaisons.
j'ai entendu parlé d'une fonction random ou rand mais je ne sais pas si ça peut m'aider.
Commenter la réponse de cs_mervat
Messages postés
90
Date d'inscription
samedi 5 juin 2010
Statut
Membre
Dernière intervention
6 mars 2015
0
Merci
merci Mr Buno, je pense que ça peut m'aider, je vais l'essayer.
Commenter la réponse de cs_mervat
Messages postés
90
Date d'inscription
samedi 5 juin 2010
Statut
Membre
Dernière intervention
6 mars 2015
0
Merci
je suis arrivée à faire ce code,
#include <stdlib.h>
#include <time.h>
#include<string>
#include 
#include <fstream>
#include <sstream>
/* determiner si une valeur x est presente dans le tableau a de taille n
   retour : 0=non presente
    1=presente
*/
static int is_in (int x, int a[], size_t n)
{  std::string s;
   int in = 0;
   size_t i = 0;

   while (!in && i != n)
   {
  in a[i] x;
  i++;
   }
   return in;
}

void nbAlea (void)
{
   enum
   {
  N = 9
   };

   int memo[5] =
   {0};
   size_t i = 0;

   /* initialisation 'variable' du generateur aleatoire */
   srand ((unsigned) time (NULL));
 
   /* tirage pseudo-aleatoire de la premiere valeur, stockage en [0] */ 
   memo[i] = (int) ((double) rand () / ((double) RAND_MAX + 1.0) * N); 


   /* tirage des autres valeurs */ 
   for (i = 1; i < 5; i++)
   { 
  do
      { 
 memo[i] = (int) ((double) rand () / ((double) RAND_MAX + 1.0) * N);
      } 
      while (is_in (memo[i], memo, i)); 
      /* on recommance tant que la valeur est deja dans le debut du tableau ([0]..[i-1]) */ 
 
   } 



   /* affichage */
  for (i = 0; i < 5; i++)
std::cout << memo[i] << " ";
 std::cout << std::endl;
}
int main (void)
{
   int i;

 for (i = 0; i < 10; i++)
   nbAlea();

   system ("pause");
   return (EXIT_SUCCESS);
}


qui m'affiche:
3 0 2 7 4
3 0 2 7 4
3 0 2 7 4
3 0 2 7 4
3 0 2 7 4
3 0 2 7 4
3 0 2 7 4
3 0 2 7 4
3 0 2 7 4
3 0 2 7 4

ce code a permis de combiner des chiffres différents dans la première ligne, mais j'ai voulu le répéter plusieurs fois pour avoir des nombres différents, ça n'a pas réussi, j'espère encore avoir votre aide.
Commenter la réponse de cs_mervat
Messages postés
90
Date d'inscription
samedi 5 juin 2010
Statut
Membre
Dernière intervention
6 mars 2015
0
Merci
vraiment merci infiniment, c'est une simple instruction qui a corrigé mon problème, alors que j'ai cassé la tête pendant 4heures envin.
Commenter la réponse de cs_mervat
Messages postés
14685
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
12 décembre 2019
90
0
Merci
C'est souvent comme ça quand on ne connait pas

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Rejoignez mon réseau professionnel sur Viadeo
Commenter la réponse de BunoCS