Ciao a tutti, vi ringrazio per l' attenzione. Il mio dilemma è dovuto al fatto che ho una lista di numeri e una di stringhe mescolate da abbinare, generata da indici casuali il problema è che al momento della stampa ottengo una stampa doppia. Penso che il problema sia dato dalla lista delle stringhe.
Questo è il codice:

Cosi è definita una carta:
struct carta_mazzo {


int valore;
string seme;
};

queste sono le funzioni per mescolare le due liste:

void mescolaValori(int *array, size_t n) {
if (n > 1)
{
size_t i;
for (i = 0; i < n - 1; i++)
{
size_t j = i + rand() / (RAND_MAX / (n - i) + 1);
int t = array[j];
array[j] = array[i];
array[i] = t;
}
}
//cout << "CARTE MESCOLATE" << endl;
}


void mescolaSemi(string*array, size_t n) { // nome puntatore di array di indici, dim array
if (n > 1)
{
size_t i;
for (i = 0; i < n - 1; i++)
{
size_t j = i + rand() / (RAND_MAX / (n - i) + 1);
string t = array[j];
array[j] = array[i];
array[i] = t;
}
}
//cout << "CARTE MESCOLATE" << endl;
}

e cosi faccio l'assegnamento:

vector <carta_mazzo> mazzo_mescolato(NUM_CARTE); // CREA IL VETTORE DI TIPO CARTA MAZZO, ALL INIZIO VUOTO


//ASSEGNAMO I VALORI AL MAZZO MESCOLATO
for (i = 0; i < NUM_CARTE; i++) {
mazzo_mescolato[i].valore = indiciValori_mescolati[i];
mazzo_mescolato[i].seme = indiciSemi_mescolati[i];
}

Ringrazio chi possa aiutarmi o darmi qualche consiglio