Jump to content
×
×
  • Create New...

Algorithme - Générateur de Pseudos Aléatoires


Nicky31
 Share

Recommended Posts

  • Retraité

Niveau requis Intermédiaire

Temps estimé : 30 minutes

Salut !

 

Travaillant sur la

Hidden Content

    Give reaction to this post to see the hidden content.
que je fais avec Sgt Fatality, j'ai dû coder une fonction pour générer des pseudos aléatoires. Chose que je n'avais jamais expérimenté par le passé et que je trouve très intéressante.

 

Révélation

 

Je vous partage donc ici le peu de code source commenté :

QString GenerateRandomPseudo(int minLength,int maxLength)
{
  // On choisit aléatoirement un nombre de caractère maximum situé entre minLength & maxLength
   int max = rand()%(maxLength-minLength) +minLength;

   QString voyelles = "aeiouy";
   QString consonnes = "bcdfghjklmnpqrstvwxz";
   QString pseudo = "";

// Liste des préfixes qui constitueront le début du pseudo
   QList prefixes;
   prefixes << "mi" << "el" << "th" << "id" << "nu" << "ig" << "heo" << "er" << "am" << "vor";
   prefixes << "ga" << "in" << "may" <<  "sa" << "ar" << "se" << "ha" << "lu" << "gw" << "ea";
   prefixes << "fin" << "me" << "rami" << "ne" << "le" << "fe" << "or" << "pen" << "que" << "rod";
   prefixes << "cele" << "ar" << "sae" << "eg" << "ii" << "tu" << "ri" << "ta" << "ur" << "val" << "ol";

// On ajoute en premier lieu un préfixe au hasard
   pseudo += prefixes[rand() % prefixes.length()]; // préfixe aléatoire
   while(pseudo.length() < max) // Tant qu'on a pas atteint la taille max
   {
      // Si la derniere lettre est une voyelle, on met une consonne
       if(voyelles.contains(pseudo[pseudo.length() - 1])) 
       {
           pseudo += consonnes[rand()%consonnes.length()];
       } else // Si la derniere lettre est une consonne, on met une voyelle
       {
           pseudo += voyelles[rand()%voyelles.length()];
       }
   }

   return pseudo;
}
N'oubliez pas d'inclure cstdlib pour rand() & ctime pour time()

 

Le fonctionnement est assez simpliste :

  1. On choisit aléatoirement une taille de pseudo entre minLength & maxLength
  2. On stocke les consonnes et voyelles dans deux strings différents
  3. On crée une "base de données" de préfixes sympas
  4. On ajoute en premier un préfixe au hasard au pseudo
  5. Jusqu'à atteindre la taille maximum, on alterne entre voyelle / consonne pour faire quelque chose de prononcable

 

Voici 10 pseudos générés à la suite avec cet algo : Sedaj - Gwuzar - Orebe - Egosy - Valoro - Mikojo - Heozeke - Olehodu - Valocet - Amel

 

On pourrait s'en tenir là, mais c'est quelque chose qu'on peut énormément complexifier (Ce qu'on a là est assez simple pour tenir en 25 lignes) pour avoir de bien plus beaux pseudos.

 

Par exemple, on pourrait rompre la monotonie voyelle - consonne en permettant à certaine lettre d'être répétée deux fois à la suite, ou encore mieux établir une liste de lettre à éliminer à la suite de x lettre.(Reconnaissez que le u à la suite de Gw n'est pas très harmonieux dans Gwuzar) Par exemple : le Y ne doit jamais être suivi d'un Q.Felicyq ? Beurk, Felicys est bien mieux !

 

 

Je vous encourage donc à améliorer ce code et à faire part de vos améliorations à la suite de ce post. J'avoue ne pas avoir trop expliqué le code par manque de temps, n'hésitez pas à me demander des choses que vous ne comprenez pas !

 

Cordialement,

Hey hey

  • J'adore 2
Link to comment
Share on other sites

  • Replies 5
  • Created
  • Last Reply

Top Posters In This Topic

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share



Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.