Jak wygenerować 64-bitowe liczby losowe?
Implementuję mieszanie uniwersalne i używam następującej uniwersalnej funkcji skrótu:
h (k) = ((A * k) mod 2 ^ 64) rsh 64-r
gdzie A jest liczbą losową między
2 ^ 61 i 2 ^ 62.
Therand()
funkcja wC ++ ma typ powrotuliczba całkowita i nie może generować tak dużych liczb. Jak więc wygenerować losowe liczby w tym zakresie? (liczby powinny być bardzo losowe, tj. każdy numer powinien mieć takie samo prawdopodobieństwo, aby zostać wybranym)
Uwaga:
long long int random=rand();
nie działa jak liczba zwrócona przezrand
jestint.