C++ zufällige Zahl zwischen 1 und 9
Brauche ich Zufallszahlen von 1 bis 9 (ohne 0).
//numbers 0 to 9
int iRand = rand() % 10;
Aber ich brauche 1 bis 9.
Dank.
- Ok, ich war jung und brauchte die Zeit...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nur das:
Gut, Sie wissen, wie man eine zufällige ganze Zahl im Bereich [0, x], richtig? Das ist:
In Ihrem Fall, das Sie sich gesetzt haben, x bis 9, geben Sie
rand() % 10
. Also, wie können Sie manipulieren eine Reihe zu bekommen, bis 1-9? Nun, da die 0 ist der kleinste Wert aus diesem random number generator Regelung, die wir kennen, müssen wir hinzufügen, haben ein minimum von einem:Bekommst du nun den Bereich [1, x + 1]. Wenn es das ist, angenommen zu werden [1, 9], dann x muss 8, geben:
So sollten Sie sich Gedanken über diese Dinge.
Versuchen:
Es funktioniert, indem Sie eine zufällige Zahl von 0 bis 8, dann das hinzufügen, um es (obwohl ich schrieb diese Vorgänge in umgekehrter Reihenfolge im code -- was Sie tun, zuerst kommt es auf persönliche Präferenz).
Beachten Sie, dass
%
hat eine höhere Priorität als+
, also Klammern sind nicht notwendig (kann aber die Lesbarkeit zu verbessern).Initialisiert den Zufallszahlen-generator rufen Sie
srand(time(0));
Dann, um die ganze Zahlx
auf einen Wert zwischenlow
(inklusive) undhigh
(exklusive):Den
floor()
ist nicht erforderlich, wenn hohe und niedrige sind beide nicht-negativ.Verwendung von modulus (
%
) für Zufallszahlen ist nicht ratsam, da Sie nicht dazu neigen, zu viel variation in der low-order bits, so finden Sie eine sehr schwache Verteilung.Wie etwa
doh geschlagen von Sekunden
Unabhängig davon, dass die Antwort ausgewählt, modulo-basierten bis hin, ist voreingenommen. Sie können feststellen, dass alle über das internet. Wenn du also wirklich um das kümmern, dann haben Sie etwas mehr zu tun, als dass (unter der Annahme arc4random() zurück, einem 4-byte integer):
Ich überlasse es Ihnen, herauszufinden, die richtige syntax, da Sie Klang wie ein sehr fähiger Entwickler.