Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Zufallsbuchstaben regenerieren?


alexschultze - Di 03.12.02 15:03
Titel: Zufallsbuchstaben regenerieren?
hi ho!


ihr kennt sicherlich alle die normale Random Funktion, der ein Randomize vorangeht.

Wie kann man nun aber Zufallsbuchstaben generieren?
Als spontane Idee käme mir, eine Zufallszahl zw. 1-26 , zu generieren und diese mit chr(Zahl) oder ähnlichem umzuwandeln.

Gibt es da noch andere Methoden oder wäre das die eine
?
;)


Udontknow - Di 03.12.02 15:08

Tja, der Aufwand, denn du leistest, um diese Frage zu stellen, ist sicherlich höher als der, diese Frage zu beantworten.

Ich hätte es genauso gemacht. Solange du nicht irgendwie eine bestimmte Häufigkeit für bestimmte Buchstaben benötigst, ist das doch schon fast trivial, nicht? :wink:

Cu,
Udontknow


alexschultze - Di 03.12.02 15:35

argh argh


also, ich habe probiert:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
procedure TForm1.Button1Click(Sender: TObject);
var
buchst, a:integer;
wort:string;
begin
wort:='';
for a:=0 to 10 do begin
randomize;
buchst:=random(26);

 wort:=wort+char(buchst);


end;
edit1.Text:=wort;
end;

da kommt nur



DaFox - Di 03.12.02 15:57

Hi!

Ist auch ganz logisch.

Zitat:

Die Funktion Chr gibt das Zeichen mit einem bestimmten ASCII-Wert zurück.


Wenn Du Dir nun mal die ASCII-Tabelle anschaust (z.B. http://www.asciitable.com), siehst Du, dass Buchstaben nicht bei 0 anfangen, sondern bei 65. Das was Du mit deinem Code gemacht hast war Sonderzeichen generieren...

Die procedure sollte also so aussehen:


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure TForm1.Button1Click(Sender: TObject); 
var
  buchst, a: integer;
  wort: string;
begin
  wort:='';
  randomize;
  for a := 0 to 10 do
  begin
    buchst := random(26) + 65;
    wort := wort + char(buchst);
  end;
  edit1.Text := wort;
end;


Gruß,
Markus