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

cs_mervat 90 Messages postés samedi 5 juin 2010Date d'inscription 6 mars 2015 Dernière intervention - 26 janv. 2011 à 10:51 - Dernière réponse : BunoCS 13786 Messages postés lundi 11 juillet 2005Date d'inscription 26 avril 2018 Dernière intervention
- 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

Répondre au sujet
BunoCS 13786 Messages postés lundi 11 juillet 2005Date d'inscription 26 avril 2018 Dernière intervention - 26 janv. 2011 à 11:40
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de BunoCS
BunoCS 13786 Messages postés lundi 11 juillet 2005Date d'inscription 26 avril 2018 Dernière intervention - 26 janv. 2011 à 16:05
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de BunoCS
BunoCS 13786 Messages postés lundi 11 juillet 2005Date d'inscription 26 avril 2018 Dernière intervention - 26 janv. 2011 à 11:05
0
Utile
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
cs_mervat 90 Messages postés samedi 5 juin 2010Date d'inscription 6 mars 2015 Dernière intervention - 26 janv. 2011 à 11:22
0
Utile
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
cs_mervat 90 Messages postés samedi 5 juin 2010Date d'inscription 6 mars 2015 Dernière intervention - 26 janv. 2011 à 11:45
0
Utile
merci Mr Buno, je pense que ça peut m'aider, je vais l'essayer.
Commenter la réponse de cs_mervat
cs_mervat 90 Messages postés samedi 5 juin 2010Date d'inscription 6 mars 2015 Dernière intervention - 26 janv. 2011 à 15:34
0
Utile
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
cs_mervat 90 Messages postés samedi 5 juin 2010Date d'inscription 6 mars 2015 Dernière intervention - 26 janv. 2011 à 22:08
0
Utile
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
BunoCS 13786 Messages postés lundi 11 juillet 2005Date d'inscription 26 avril 2018 Dernière intervention - 27 janv. 2011 à 09:11
0
Utile
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.