O puedes hacer como se hacen con los naipes, los barajas.
int v[] = {54,65,43,6,5,32,100,34,76,22,13,9};
for(i=0; i<12; i++){
numero=rand()%12; //tomas una posicion aleatoria
temp = v[numero]; // intercambias elemento v[i] con otro elemento aleatorio
v[numero] = v[i];
v[i] = temp;
}
//aqui los numeros de v[] estarían desordenados aleatoriamente
for(i=0; i<12; i++){
printf("%i\n",v[i]);
}
Es decir, en vez de elegir aleatoriamente desde los elementos del vector, intercambias la posicion aleatoriamente de los elementos del vector. Tal y como se hace con una baraja de naipes.
Saludos