Yes, you can do it using a set<your_cards_class> (which prevents from duplication) and then use boost random number in range, and pop cards out when player receives them. https://www.boost.org/doc/libs/1_66_0/doc/html/boost_random/tutorial.html#boost_random.tutorial.generating_integers_in_a_range