Zufälligen Buchstaben bzw. Zahl ausgeben
-
Hi,
ich möchte gerne einen zufälligen Buchstaben (A-Z) oder eine eine zufällige
Zahl (0-9) ausgeben.Bis jetzt würde ich A bis 0 in einem Array anlegen und dann eine Zufallszahl
im Bereich 0 bis 35 ausgeben lassen. 0 wäre also A und 35 wäre 9.Kann man das auch geschickter lösen?
-
Ist doch ne gute Lösung.
-
Ein String bzw. char-Array bietet sich an.
cout << "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"[rand() % 36] << endl;
-
Shoggy schrieb:
Kann man das auch geschickter lösen?
Du kannst dir Zufallszahlen zwischen
'a'und'z'bzw. zwischen'1'und'0'erzeugen. Um das zu erreichen, generierst du zuerst Zahlen innerhalb [0, 36[ und verschiebst diese je nach Bereich (Buchstaben oder Ziffern) so, dass 0 auf'a'abgebildet wird und 26 auf'1'. Das kannst du mit If-Abfragen realisieren.Hoffentlich war das nicht zu verwirrend. Ob meins eine geschicktere Lösung ist, hm. Ich bin mir nicht ganz sicher, ob vom Standard garantiert wird, dass die besagten Zeichen hintereinander stehen. Zudem wirst du mehr Code benötigen und bist unflexibler, was das nachträgliche Hinzufügen einzelner Zeichen betrifft.
Kurz gesagt: Geschickter ist es nicht.

Aber ich hoffe trotzdem, du kannst diese Vorgehensweise für ein anderes Problem nutzen, bei dem nicht mehr einfach alle möglichen Zustände aufgelistet werden können.
-
Wenn man es ohne Array machen will, ist wohl so etwas in der Art eine gute Lösung:
int i = rand() % 36; if(i < 26) result_char = i+'A'; else result_char = i-26+'0';Wobei man aber auch hier darauf vertrauen muss, dass A bis Z bzw. 0 - 9 fortlaufende Codes besitzen.
EDIT: Hm, genau das hat Nexus geschrieben, ich sollte besser lesen

Aber vielleicht wird es so deutlicher.