[C] Generateur aleatoire de question
Utilisateur anonyme
-
kilian Messages postés 8732 Date d'inscription Statut Modérateur Dernière intervention -
kilian Messages postés 8732 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
J'aimerai faire un un questionnaire posant des questions aleatoirement mais toutes les possibilites que j'ai essaye ne marchent pas (je ne les ai pas sous la main).
Pouriez vou me donner un code qui marche SVP ?
Mercid'avance.
J'aimerai faire un un questionnaire posant des questions aleatoirement mais toutes les possibilites que j'ai essaye ne marchent pas (je ne les ai pas sous la main).
Pouriez vou me donner un code qui marche SVP ?
Mercid'avance.
A voir également:
- Générateur de question
- Generateur mot de passe - Télécharger - Sécurité
- Generateur de cle windows 10 - Guide
- Canva générateur d'image - Accueil - Outils
- Générateur de clé d'activation - Accueil - Windows
- Generateur d image - Guide
3 réponses
Salut,
#include <stdlib.h> //pour srand et rand #include <time.h> //pour time srand(time(NULL)); //pour initialiser la graine int i= 1 + (int) (10.0 * (rand() / (RAND_MAX + 1.0))); //pour avoir un nombre entre 1 et 10
Tu veux que toutes les questions ne soient posées qu'une seule fois et de manière aléatoire.
Il n'y a qu'une solution, il faut enregistrer le n° des questions posées; le plus simple c'est de le faire à l'aide d'un tableau, de vérifier à chaque tirage et de relancer celui-ci si la question a déjà été posée.
Pour ce qui est de l'aléa, fiddy t'as donné la méthode.
Il n'y a qu'une solution, il faut enregistrer le n° des questions posées; le plus simple c'est de le faire à l'aide d'un tableau, de vérifier à chaque tirage et de relancer celui-ci si la question a déjà été posée.
Pour ce qui est de l'aléa, fiddy t'as donné la méthode.
Une astuce est alors :
1) créer une liste contenant tous les nombres possibles,
2) la mélanger aléatoirement
3) lire les valeurs successivement
T'es ainsi sûr qu'une valeur passée ne repassera pas (avant de les avoir toutes passées).
1) créer une liste contenant tous les nombres possibles,
2) la mélanger aléatoirement
3) lire les valeurs successivement
T'es ainsi sûr qu'une valeur passée ne repassera pas (avant de les avoir toutes passées).
Eh bien, utilise le programme suivant :
#include <stdio.h> #include <stdlib.h> #include <time.h> #define MAX 20 static int random(void) { return (int) (MAX * ((double)rand() / RAND_MAX)); } static void ech(int *t,const int i, const int j){ int tmp=t[i]; t[i]=t[j]; t[j]=tmp; } int main(void){ int tab[20]; int i,j; int cpt; srand(time(NULL)); for(int i=0;i<MAX;i++) tab[i]=i; cpt=MAX/2; while(cpt--){ i=random(); j=random(); ech(tab,i,j); } //tab contient des numéros aléatoires uniques ;) return 0;
Bien sûr quelle est bonne sa méthode!
Et qu'il y ait 153 questions n'est pas un problème... c'est la machine qui travaille.
Pour le mélange aléatoire, on peut remplir un tableau de 153 entiers, de le remplir avec 0, 1, ... 152; puis prendre successivement chaque case du tableau et l'inverser, de manière aléatoire, avec une autre case du tableau .
Et qu'il y ait 153 questions n'est pas un problème... c'est la machine qui travaille.
Pour le mélange aléatoire, on peut remplir un tableau de 153 entiers, de le remplir avec 0, 1, ... 152; puis prendre successivement chaque case du tableau et l'inverser, de manière aléatoire, avec une autre case du tableau .