Ho due vettori.
Genero un numero random n tra 1 e (dim-2).
Scambio le porzioni dei vettori da n in poi.
Esempio:
Dim = 8
Valori ammissibili = da 0 a 14
Vincolo: i due vettori devono essere composti da elementi distinti.

v1: 2 4 5 7 9 10 13 14
v2: 4 6 8 10 11 12 13 14

Genero casualmente il taglio, ipotizziamo 4.

Applicando lo scambio ottengo:

v1: 2 4 5 7 11 12 13 14
v2: 4 6 8 10 9 10 13 14

Su v2 il numero 10 è ripetuto 2 volte...come fare per evitare questo???

Io ho realizzato del codice ma a volte mi crasha:
codice:
int dim = 8,i,j;
int v1[8], v2[8], appoggio[8];
taglio = (RANDOM((dim-2))+1);

/*copio la seconda parte di v1 nell'array di appoggio*/
        for(i = taglio; i<dim; i++)
        {
              appoggio[i]=v1[i]; 
        }
        /*copio la seconda parte di v2 nel primo individuo*/
        for(i=taglio;i<dim;i++)
        {
            /*copio un elemento di v2 in v1*/
            v1[i] = v2[i];
            /*controllo che non vi siano doppioni*/
            for(j=0;j<taglio;j++)
            {
                /*se trovo un doppione*/
                if(v1[j] == v2[i])
                {
                    /*prendo un altro random*/
                    doppione = RANDOM(15);
                }
                v1[i] = doppione;

            }
        }        
        /*copio la parte dell'array di appoggio nella seconda parte di v2*/
        for(i=taglio;i<dim;i++)
        {
             /*copio un elemento di appoggio in v2*/
             v2[i] = appoggio[i];
             /*controllo che non vi siano doppioni*/
            for(j=0;j<taglio;j++)
            {
                /*se trovo un doppione*/
                if(v2[j] == appoggio[i])
                {
                    /*prendo un altro nodo random*/
                    doppione = RANDOM(15);
                }

                v2[i] = doppione;
            }
        }
Aiutooooo!!!!!!!