Zitat von
Z4ppy:
Nun nochmal: ich nehme random:=x mod R, R ist eine riesige Zahl - was muss x sein?
Und auch noch mal
- damit jetzt endlich klar ist was gemacht werden soll:
R ist eine riesige Zahl und Du sucht eine Zufallszahl z mit 0 <= z < R.
Sei l = ceil(log2(R)) die Bitlänge von R.
Die bessere Methode:
Code:
repeat
erzeuge l Zufalls-BITS
mach aus den l BITS ein bigint x >=0
until x < R
z := x;
Mit der mod-Methode erzeugst Du l+k BITS, machst aus diesen BITS ein bigint x und setzt z := x mod R.
Je größer k ist, desto bessere Gleichverteilung erhältst Du. Also zB k=32: Abweichung von der Gleichverteilung ca 1 : 4 Milliarden.
Gruß Gammatester