Verblüffenderweise gibt es schon bei n= 13 mehr Permutationen als 32-bittige Zahlen (da die Inverse der Fakultätsfunktion ohne weitere Tricks etwas kompliziert ist, empfiehlt sich hier schlichtes Probieren und eine Binärsuche nach der Grenze, bei der n! größer wird als 232). Bei n= 20 deckt ihr nur noch ein gutes Milliardstel der möglichen Permutationen ab, bei n= 100 könnt erwischt ihr nur noch jede 10366ste Permutation, also praktisch keine mehr (übrigens hilft da auch nicht der Übergang zu 64-bittigen Zahlen, mit denen erwischt ihr jede 10356ste Permutation, was genauso ” praktisch nichts“ mehr ist).
Abhilfe könnte sein, mehr Zufallszahlen zu ziehen – z.B. könntet ihr eine Menge von Positionen haben und aus dieser ” ohne Zurücklegen“ ziehen (es lohnt sich, sowas mal in Python zu schreiben). Effektiv zieht ihr dann 232n bits ” Zufall“. Allerdings muss man solche Verfahren sehr sorgfältig durchdenken, weil es leicht sein kann, dass diese auch keine Gleichverteilung auf den Permutationen mehr erzeugen. Ein Übriges tut dann der Umstand, dass bei manchen der Zufallszahlengeneratoren, die z.B. in der C-Bibliothek stehen, aufeinanderfolgende (oder in gewissem Abstand aufeinanderfolgende) Zufallszahlen gar nicht mehr so schrecklich zufällig sind…