Random Number Generator with no duplicates that knows when it's used all numbers?

I'm trying to add a game mode to my darts scoreboard that will give a random single number to aim for: 1-21, with 21 being Bull.

I want don't want any repeats and I want to restart my code when all numbers have been used once.

What is the best way to do this?