La mia idea è non di generare direttamente una permutazione della stringa, ma di prendere la stringa e di effettuare un certo numero di scambi dei suoi elementi.Il criterio con cui scambiarli è casuale.
Ho scritto una funzione:
codice:
void permutazione(char *s)
{
int i,min,random_1,random_2;
srand(time(NULL));
min=(strlen(s)-1)/2;
for(i=0;i<N;i++)
{
random_1=rand()%min;
random_2=rand()%min;
random_2+=min;
cswap(&s[random_1],&s[random_2]);
}
}
Dove N è una costante ed è il numero di scambi che si vuole effettuare.
cswap è una funzione per scambiare caratteri.
Per evitare che random_1 e random_2 abbiano gli stessi valori, ho fatto assumere a random_1 i valori che vanno da inizio stringa a metà stringa, e a random_2 i valori successivi, per poter generare una permutazione anche con un N molto piccolo.