List cards = new List(); cards.Add(new Card("Lion" .. . .. .. . .)); // You keep doing this for all your cards and stuff! Random rand = new Random(); Stack deck = new Stack(); while ( cards.Count != 0 ) { int currentCardIndex = rand.Next(0, cards.Count - 1); deck.Push(cards[currentCardIndex]); cards.Remove(currentCardIndex); } // The stack is now a shuffled deck // To deal a card, simply do deck.Pop() and it will return the card you need to deal