hyrulink2: ce que j'ai dit, c'est qu'un code dont on n'a pas prouvé qu'il était uniforme. Mais ça va même bien plus loin que ça : un générateur "aléatoire" qui te donne "1, 2, 3, 1, 2, 3, 1, 2, etc." est uniforme sur {1,2,3}. Pourtant, je doute que tu veuilles vraiment utiliser un tel générateur.
Mais bon, tout ceci n'a vraiment rien à voir avec le problème de l'OP, et je voulais éviter qu'on en parle ici où ça n'a pas franchement sa place.
iLIKEto:
Encore une fois, je n'ai pas testé le code. Je vais donc juste des remarques sur l'allure du code :
1) découpe ton travail en fonction, ça sera bien plus simple pour réutiliser ton code,
2) utilise éventuellement des noms plus explicites pour tes variables,
3) utilise des tableaux de char ici, pas des string,
Exemple:
« string a = "'abcdefghijklmnopqrstuvwxyz "; » (qui au passage devrait être « string a( "'abcdefghijklmnopqrstuvwxyz " ); »
char lettres[] = "'abcdefghijklmnopqrstuvwxyz ";
4) « while (x < 28 ) »
on utilise plus volontier une boucle for ici. Je te suggère au passage de lire la discussion ici :
https://www.jeuxvideo.com/forums/1-47-68174-1-0-1-0-difference-entre-while-et-for.htm
5) « b.erase(y,1); »
vraiment, ça c'est catastrophique. Un vector, ce n'est pas une structure faite pour enlever des éléments comme un sauvage (pardonne moi l'expression
). Si tu veux une structure où tu pioches/enlève des éléments, utilise les std::set.
6) Indente/commente un peu ton code. Ça aide toujours de se poser quelques minutes quand on fait de la technique.