Porównanie generatorów liczb losowych: funkcji random() i Knuth'a w teście pokerowym

Losujemy 5 kart z 52 i liczymy średnią liczbę wystąpień określonych sekwencji.
Liczba wszystkich możliwych sekwencji wynosi W = (52 po 5) = 2 598 960
Prawdopodobieństwa wystąpień sekwencji kart w pokerze:
- Jedna para: 1 098 240 / W = 0.422569 ~= 1/2,4
- Dwie Pary: 123 552 / W = 0.047539 ~= 1/21
- Trójka: 54 912 / W = 0.0211 ~= 1/44
- Full: 3 744 / W = 0.00144 ~= 1/694
- Kareta: 624 / W = 0.00024 ~= 1/4165
- Kolor: 5 148 / W = 0.00198 ~= 1/50
- Strit: 9*4^5/W=9216/W = 0.003546 ~= 1/282
- Poker: 9*4/W=36/W = 0.0000138 ~= 1/72193

Porównując wartości różnic między średnią liczbą wystąpień danej sekwencji kart a prawdziwym prawdopodobieństwem wystąpienia tej sekwencji, przy losowaniach funkcją random() z kompilatora C++Builder 4 i 5 a funkcją Knuth'a, ta pierwsza wypada jednak nieznacznie lepiej (częściej są mniejsze różnice).

Implementacja:
Plik z funkcją Knuth'a przerobiłem z C na C++.
Napisałem dwie funkcje losujące piątkę kart:
- jedna losuje kary kolejno za każdym razem sprawdzając czy nie powtarza się z jakąś z wcześniej wylosowanych
- druga losuje od razu całą piątkę i dopiero sprawdza czy karty nie powtarzają się