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

Signaler
Messages postés
90
Date d'inscription
samedi 5 juin 2010
Statut
Membre
Dernière intervention
6 mars 2015
-
BunoCS
Messages postés
14742
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
17 février 2020
-
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.

8 réponses

Messages postés
14742
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
17 février 2020
91
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
Messages postés
14742
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
17 février 2020
91
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
Messages postés
14742
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
17 février 2020
91
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
Messages postés
90
Date d'inscription
samedi 5 juin 2010
Statut
Membre
Dernière intervention
6 mars 2015

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.
Messages postés
90
Date d'inscription
samedi 5 juin 2010
Statut
Membre
Dernière intervention
6 mars 2015

merci Mr Buno, je pense que ça peut m'aider, je vais l'essayer.
Messages postés
90
Date d'inscription
samedi 5 juin 2010
Statut
Membre
Dernière intervention
6 mars 2015

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.
Messages postés
90
Date d'inscription
samedi 5 juin 2010
Statut
Membre
Dernière intervention
6 mars 2015

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.
Messages postés
14742
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
17 février 2020
91
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