Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Vierstellige Zufallszahlen
Arne Danikowski - Fr 03.07.09 11:28
Titel: Vierstellige Zufallszahlen
Hallo ich möchte eine vierstellige Zufallszahl im Bereich von 0000 - 9999 erzeugen.
Das habe ich bereits:
Delphi-Quelltext
1: 2: 3:
| Randomize; for a := 1000 to 9999 do pass:=(IntToStr(random(9999))); |
Funktioniert soweit, jedoch erhalte ich auch immer noch 3 und 2 stellige Zahlen.
Was iat an meinem Code falsch?
jaenicke - Fr 03.07.09 11:37
Du möchtest
eine Zufallszahl erzeugen? Und warum machst du das tausende Male hintereinander in einer Schleife?
Delphi-Quelltext
1:
| for a := 1000 to 9999 do |
Und du möchtest die im Bereich von 0000 bis 9999 erzeugen? Wie meinst du das? Eine Zahl hat keine führenden Nullen, nur ein String, in dem die Zahl steht, kann das haben.
Meintest du vielleicht das?
Delphi-Quelltext
1: 2: 3:
| pass := IntToStr(Random(10000)); while Length(pass) < 4 do pass := '0' + pass; |
Das Randomize sollte nur einmal beim Start des Programms aufgerufen werden, nicht immer wieder.
R4id - Fr 03.07.09 11:42
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| uses Math;
procedure TForm1.FormCreate(Sender: TObject); var MyInt: Integer; begin Randomize; MyInt := RandomRange(1000, 9999);
Caption := IntToStr(MyInt); end; |
Wäre auch eine Lösung.
Gruß R4id
jaenicke - Fr 03.07.09 11:43
Sicher, da ginge auch Random(9000) + 1000 (nichts andere macht RandomRange), aber bei dir fehlt die letzte Zahl 9999.
Aber oben steht im Bereich von 0000 bis 9999, also nicht vierstellige Zahlen wie der Titel impliziert, sonder vierstellige Strings. ;-)
Arne Danikowski - Fr 03.07.09 11:59
Vielen dank funktioniert prima!
der organist - Fr 03.07.09 14:01
ansonsten:
Delphi-Quelltext
1: 2:
| for i:=0 to 3 do pass:=pass+IntToStr(Random(10)); |
Setzt natürlich voraus, dass
pass vorher einmal geleert wird.... Ansonsten mit einmal mit
repeat-Schleife:
Delphi-Quelltext
1: 2: 3: 4:
| repeat inc(i); pass:=pass+IntToStr(Random(10)); until i=3; |
Auch hier natürlich
pass vorher leeren und
i auf Null setzen...
€: Random (10) statt Random (9)
Bergmann89 - Fr 03.07.09 14:11
Hey,
random(9) erzeugt aber nur Zahlen zwischen 0 und 8!
Besser ist random(10) ;)
MfG Bergmann
Marc. - Fr 03.07.09 20:35
der organist hat folgendes geschrieben : |
ansonsten:
Delphi-Quelltext 1: 2:
| for i:=0 to 3 do pass:=pass+IntToStr(Random(9)); | |
Was hast du denn damit vor? :shock: Nicht, dass das nicht nur absolut unperformant ist, ich finde es auch wesentlich unverständlicher auf dem ersten Blick als die "einzeilen-Lösung" die vorher bereits erwähnt wurde. Ich plädiere zu
jaenickes Lösung.
Edit: Pardon, es ging ja um Strings. Das Wetter ... :roll:
alzaimar - Fr 03.07.09 23:49
Übrigens würde ich vierstellige Zahlen mit führenden Nullen so formatieren:
Delphi-Quelltext
1:
| Format('%.4d',[Random(10000)]); |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!