Einzelnen Beitrag anzeigen

globetrotter77

Registriert seit: 16. Jan 2009
Ort: Nürnberg
236 Beiträge
 
Delphi 10.3 Rio
 
#22

Re: Zufallszahl ziehen ohne wiederholung

  Alt 7. Feb 2009, 09:13
Wenn's nicht mehr als 255 Fragen sein sollen, könnte man auch eine Lösung mit einem String basteln.
Das sieht dann so aus:
Stelle 1 = #1
Stelle 2 = #2
etc.
Nach jedem Ziehen wird das gezogene Zeichen aus dem String gelöscht.

beispielsweise so:
Delphi-Quellcode:
const gesamt=40;
      anzahl=15;
var liste: string;

procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
begin
  Randomize;
  liste:='';
  for i:=1 to gesamt do
    liste:=liste+chr(i);
end;

procedure TForm1.Button1Click(Sender: TObject);
var p,z:integer;
begin
  if length(liste)<=gesamt-anzahl then
  begin
    showmessage('Fertig!');
    exit;
  end;
  p:=Random(length(liste))+1;
  z:=ord(liste[p]);
  delete(liste,p,1);
  frage(z);
end;

procedure TForm1.frage(z: integer);
begin
  ListBox1.Items.Add(IntToStr(z)); // hier sollte natürlich die eigentliche Frage
                                   // mit der Nr. z bearbeitet werden
end;
Zitat:
hatte bisschen Langeweile und hab das ganze mal zu Übungszwecken (und zur Verwirrung) absichtlich bisschen komplexer gelöst *g*
ein sehr hübscher Ansatz! ... *grins*
  Mit Zitat antworten Zitat