How to use value from list without repeating?

I have one list(planePosition). I want to use those list value randomly without repetition so I am using

for( int a=0; a< planePosition.Count; a++)
{ 
int r=Random.Range(0,planePosition.Count);
Newplan.transform.position =  new Vector3 (planePosition[r].x, planePosition[r].y ,9.990011f);
planePosition.RemoveAt(r);
}

but still I am getting duplicate value…

Thanks in Advance
kajal

you can use Fisher-Yates shuffle , here is a good explanation of the algorithm

  public static void Shuffle<T>(this IList<T> list)  
    {  
        Random rng = new Random();  
        int n = list.Count;  
        while (n > 1) {  
            n--;  
            int k = rng.Next(n + 1);  
            T value = list[k];  
            list[k] = list[n];  
            list[n] = value;  
        }  
    }

Keep a collection of the indexes you’ve used, and continue requesting random indexes until the one chosen is not contained in the collection.