I need a quick algorithm to select 5 random elements from a generic list. For example, I'd like to get 5 random elements from a
Iterate through and for each element make the probability of selection = (number needed)/(number left)
So if you had 40 items, the first would have a 5/40 chance of being selected. If it is, the next has a 4/39 chance, otherwise it has a 5/39 chance. By the time you get to the end you will have your 5 items, and often you'll have all of them before that.
YourList.OrderBy(x => rnd.Next()).Take(5)