@@Bachforelle
soll es ausgeben:
ZTQ-23782
AWB-93849also 3 Großbuchstaben, Bindestrich und dann 5 Zahlen.
Also der Reihe nach: zuerst 3 Großbuchstaben. Da die Anzahl der Schleifendurchläufe von vornherein bekannt ist, kommt eine for
-Schleife in Betracht, keine while
-Schleife.
Innerhalb der Schleife ziehst du eine Zufallszahl x; die ist aus dem Intervall [0, 1[, d.h. 0 ≤ x < 1. Wenn du die nun mit der Anzahl der möglichen Buchstaben (von A bis Z sind’s 26) multipliziert, erhältst du eine Zahl aus [0, 26[. Davon nimmst du den ganzzahligen Anteil und erhältst eine Zahl aus {0, 1, 2, …, 25}.
'A' hat den Codepoint U+0041. Wenn du also zu deiner Zahl x41 = 65 dazuaddiert, erhältst eine Zahl aus {x41, x42, x43, …, x5A}, die du in ein Zeichen aus {'A', 'B', 'C', …, 'Z'} umwandelst.
[Ende der Schleife]
Den Bindestrich hinzuzufügen sollte nicht das Problem sein.
Nun eine Schleife für die Ziffern, von denen es nicht 26 mögliche, sondern 10 gibt. Der Offset, um von den Zahlen 0 bis 9 auf die Zeichen '0' bis '9' zu kommen, wäre x30. ('0' hat den Codepoint U+0030.) [Ende der Schleife]
Du kannst natürlich auch gleich deine Zufallszahl mit 10⁵ = 100000 multiplizieren und sparst die zweite Schleife.
Hätte man bei der ersten Schleife auch machen können, d.h. gleich mit 26³ multiplizieren und die Zahl in 3 Zeichen umwandeln. Das dürfte aber für dich komplizierter sein.
LLAP
„Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)