Ciao, credo che l'ottimizzazione migliore che puoi fare per ottenere ciò che vuoi sia questa:
codice:
int[] vettore = Enumerable.Range(0,9).OrderBy(o => Guid.NewGuid()).ToArray();
così ottieni un array di numeri casuali da 0 a 9
edit:
ovviamente se hai già un array e lo vuoi rimescolare non devi utilizzare Enumerable.Range
codice:
//vettore già esistente (ovviamente ordinato come ti pare, anche sequenziale)
int[] vettore = new int[] { 4, 5, 8, 7, 3, 2, 1, 0, 6, 9 };
//ordini in modo casuale
vettore = vettore.OrderBy(o => Guid.NewGuid()).ToArray();