Nick: C++ (Pseudo-)Zufallszahl generieren

Beitrag lesen

Guten Morgen Gunnar!

Wie willst du 2³² (eine 1 mit 32 Nullen) mit 32 Bit darstellen?

Achso ja. Ich habe es verstanden.

Das gibt mir sehr viele Werte im Bereich 167xxxxx bis 168xxxxx - meist mit 167 am Anfang. Aber nach 100 Durchläufen kam noch keine Zahl mit mehr Stellen oder in einem anderen Bereich :(

Du hast ein x vergessen? Das wäre dann 2²⁴ + ein bisschen. Da scheint rand() % (1<<31) nicht wie erwartet eine Zufallszahl aus dem Bereich [0, 2³¹[ zu liefern. Da sollte dein Debugging ansetzen.

Nein, ich habe kein x vergessen. Und ja, das scheinen nur Zahlen bis 25bit zu sein (wenn ich mich nicht irre :D). Ich weiß allerdings nicht wie bzw. wo ich da mit debuggen ansetzen sollte. Es ist ja nur 1 Funktionsaufruf. Es tut nicht was ich erwartet hätte aber ich weiß auch nicht wo der Fehler liegt. Siehe:

Ok, ich habe es geändert zu
r = rand() % (1<<31) + (1<<24);
Das sollte doch eigentlich nichts anderes sein als das Beispiel der Referenz mit
v2 = rand() % 100 + 1; // v2 in the range 1 to 100

BTW sind weder 2²⁴ noch 2³¹ das, was du ursprünglich wolltest.

Ja, ich schrieb doch, dass ich die Problemstellung geändert habe:
Jetzt habe ich versucht eine Zahl zwischen 24bit und 32bit zu erzeugen...
Oder habe ich dich falsch verstanden?

Grüße