Eine Variante hierfür wäre z.B. die Möglichen Zahlen in einem Array zu halten, und dort dann per Zufall eine Rauszuangeln. Per nächsten mal ist das Array dann um diese Zahl kleiner ...
Das halte ich für die einfachste Lösung.
Wenn es wirklich darum geht, eine Permutation zu bestimmen, dann geht das auch noch anders.
Offensichtlich gibt es ja 20! Permutationen der Zahlen von 1 bis 20. Was man also tun könnte, wäre eine Zufallszahl zwischen 1 und 20! zu bestimmen und die einzelnen Zahlen durch sukzessive Division bzw. Restklassenbildung abzuspalten.
Das könnte bezüglich Performance besser sein als 20 Würfelwürfe ...