Fonction aleatoire
vivelamayo
Messages postés
5
Statut
Membre
-
Pacorabanix Messages postés 4122 Date d'inscription Statut Membre Dernière intervention -
Pacorabanix Messages postés 4122 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je cherche a faire un jeu de mastermind en c++ en solo, pour cela je cherche une fonction aléatoire qui me renvoie des caractères et non des chiffres.
si vous savez svp aidez-moi !!^^
je cherche a faire un jeu de mastermind en c++ en solo, pour cela je cherche une fonction aléatoire qui me renvoie des caractères et non des chiffres.
si vous savez svp aidez-moi !!^^
A voir également:
- Fonction aleatoire
- Fonction si et - Guide
- Fonction miroir - Guide
- Fonction moyenne excel - Guide
- Fonction remplacer sur word - Guide
- Fonction somme excel - Guide
6 réponses
Une lettre, c-à-d un caractère (un char) en C++ c'est juste une variable numérique (oui oui, un nombre) qui représente un code ASCII plus ou moins.
tu vas voir la table ascii en lien juste à la ligne au dessus. ensuite tu dois simplement faire une fonction qui utilise rand() pour créer un nombre aléatoire entre tant et tant (Selon si tu veux utiliser les majuscules aussi, certaines lettres, etc...).
un truc du genre :
//fonction qui donne un caractère au hasard entre A, B, C et D :
//quelque part dans ton code il serait bien d'avoir :
const char CODE_A = 'A'; // le code ASCII pour 'A'
char caractereAleatoire() {
return (char) (rand() % 4) + CODE_A;
// ou return (char) ( (rand%4) + 65);
}
pour être honnête j'ai la flemme de tester là maintenant, je ne suis pas tout à fait sûr de mon coup, mais essaye et tu verras bien si ça marche ;)
tu vas voir la table ascii en lien juste à la ligne au dessus. ensuite tu dois simplement faire une fonction qui utilise rand() pour créer un nombre aléatoire entre tant et tant (Selon si tu veux utiliser les majuscules aussi, certaines lettres, etc...).
un truc du genre :
//fonction qui donne un caractère au hasard entre A, B, C et D :
//quelque part dans ton code il serait bien d'avoir :
const char CODE_A = 'A'; // le code ASCII pour 'A'
char caractereAleatoire() {
return (char) (rand() % 4) + CODE_A;
// ou return (char) ( (rand%4) + 65);
}
pour être honnête j'ai la flemme de tester là maintenant, je ne suis pas tout à fait sûr de mon coup, mais essaye et tu verras bien si ça marche ;)
mais est-il possible de générer une chaine de seulement 4 caractères ?
pour un chaine c'est autre chose. mais on peut récupérer le principe :
tu n'as qu'à créer un tableau de char, rajouter le caractère nul ('\ 0' ou la valeur numérique 0) à la fin, et tu as une chaine de caractères style C ;) convertible en String avec un simple "String chaine =ton tableau de char" ou "String chaine = new String(ton tableau de char)" je ne sais plus.
tu n'as qu'à créer un tableau de char, rajouter le caractère nul ('\ 0' ou la valeur numérique 0) à la fin, et tu as une chaine de caractères style C ;) convertible en String avec un simple "String chaine =ton tableau de char" ou "String chaine = new String(ton tableau de char)" je ne sais plus.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Pacorabanix, je ne cherche pas tout a fait ça mais merci.
Je voudrais que l'ordi me une série aléatoire de 4 lettres contenant les lettres "R, V, B, J, N, O"
Je voudrais que l'ordi me une série aléatoire de 4 lettres contenant les lettres "R, V, B, J, N, O"
Ok. la différence est plutôt grande si le programme peut répéter les mêmes lettres ou non.
Le plus simple, c'est s'il peut les répéter :
tu mets des caractères dans un tableau de char.
Tu as un tableau pour les caractères aléatoires que tu vas choisir
Tu tires un nombre n au hasard entre 0 et 5, et tu places le caractère correspondant ( leTableauDeBase[n] ) dans la première case de ton tableau de caractère aléatoire. Tu répètes ça pour les 3 cases de ton tableau de caractères aléatoires.
Sinon, si tu n'as pas le droit d'utiliser plusieurs fois le même caractère, il faut ruser et faire en sorte de par exemple:
* soit retirer si le caractère est déjà utilisé, et comme tu peux retomber dessus encore, il faut faudra peut-être retirer beaucoup de fois,
* soit de supprimer le caractère déjà utilisé du tableau initial, ce qui implique de recréer le tableau à chaque fois et aussi de faire attention à ne pas tirer un nombre aléatoire entre 0 et 5 pour la deuxième fois, mais entre 0 et 4. Puis entre 0 et 3, etc.. ça demande quelques efforts, et ce serait très grandement facilité si tu as quelques notions des conteneurs standard de la STL (comme vector<> ou list<>).
il y a diverses autres possibilités bien sûr, et il y a surement des bibliothèques de fonctions deja faites pour ça mais personnellement je ne les connais pas.
Le plus simple, c'est s'il peut les répéter :
tu mets des caractères dans un tableau de char.
Tu as un tableau pour les caractères aléatoires que tu vas choisir
Tu tires un nombre n au hasard entre 0 et 5, et tu places le caractère correspondant ( leTableauDeBase[n] ) dans la première case de ton tableau de caractère aléatoire. Tu répètes ça pour les 3 cases de ton tableau de caractères aléatoires.
Sinon, si tu n'as pas le droit d'utiliser plusieurs fois le même caractère, il faut ruser et faire en sorte de par exemple:
* soit retirer si le caractère est déjà utilisé, et comme tu peux retomber dessus encore, il faut faudra peut-être retirer beaucoup de fois,
* soit de supprimer le caractère déjà utilisé du tableau initial, ce qui implique de recréer le tableau à chaque fois et aussi de faire attention à ne pas tirer un nombre aléatoire entre 0 et 5 pour la deuxième fois, mais entre 0 et 4. Puis entre 0 et 3, etc.. ça demande quelques efforts, et ce serait très grandement facilité si tu as quelques notions des conteneurs standard de la STL (comme vector<> ou list<>).
il y a diverses autres possibilités bien sûr, et il y a surement des bibliothèques de fonctions deja faites pour ça mais personnellement je ne les connais pas.