Einzelnen Beitrag anzeigen

D0N

Registriert seit: 28. Jan 2008
Ort: Fischbach
35 Beiträge
 
RAD-Studio 2010 Arc
 
#1

Random ohne doppelte Zahlen

  Alt 2. Okt 2008, 21:22
Hallo

ich habe vor für meinen Clan n Programm zu schreiben welches durch das benutzen von random eine Zufällige map auswählt oder eine Zufällige aufstellung (TF2) nun habe ich Das problem das es ja sehr schlecht ist wenn in einer Aufstellung jemand doppelt vorkommt.

Da dachte ich mir hmm keine zahl doppelt dürfte ja kein Problem sein.

Mit Array kenne ich mich nicht aus.

Ich wollte nach jedem durchlauf der Schleife das ergebnis in eine Listbox schreiben lassen um das nächste ergebnis damit abzugleichen.

Nur weiß ich nicht wie und vorallem ob man überhaupt mit der Listbox abgleichen kann.

Vielleicht habt ihr ja bessere Vorschläge dafür.

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var zufall, anzahl, ergebniss, i, zaehler, cnt:integer;
    found: boolean;
    a: string;
begin
  button2.Visible:= False;
  panel1.Visible:= false;
  panel2.Visible:= True;
  a:= labelededit1.Text;
  zaehler:= 0;
  zufall:= 0;
  anzahl:= strtoint(labelededit13.Text);
  if radiobutton2.Checked = (true) then
    for i := 1 to anzahl do
    begin
{      repeat
        begin
           randomize;}

           zufall:= random(anzahl)+1;
        {end
      until zufall <> ergebniss;
        begin
          ergebniss:= zufall;}

          inc(zaehler);
          if zufall = listbox1.Items[listbox1.ItemIndex] then
            zufall:= random(anzahl)+1
          else
          begin
          case zufall of
            1: memo1.Lines.Add(inttostr(zaehler) + '. Slot: ' + labelededit1.Text);
            2: memo1.Lines.Add(inttostr(zaehler) + '. Slot: ' + labelededit1.Text);
            3: memo1.Lines.Add(inttostr(zaehler) + '. Slot: ' + labelededit1.Text);
            4: memo1.Lines.Add(inttostr(zaehler) + '. Slot: ' + labelededit1.Text);
            5: memo1.Lines.Add(inttostr(zaehler) + '. Slot: ' + labelededit1.Text);
            6: memo1.Lines.Add(inttostr(zaehler) + '. Slot: ' + labelededit1.Text);
            7: memo1.Lines.Add(inttostr(zaehler) + '. Slot: ' + labelededit1.Text);
            8: memo1.Lines.Add(inttostr(zaehler) + '. Slot: ' + labelededit1.Text);
            9: memo1.Lines.Add(inttostr(zaehler) + '. Slot: ' + labelededit1.Text);
            10: memo1.Lines.Add(inttostr(zaehler) + '. Slot: ' + labelededit1.Text);
            11: memo1.Lines.Add(inttostr(zaehler) + '. Slot: ' + labelededit1.Text);
            12: memo1.Lines.Add(inttostr(zaehler) + '. Slot: ' + labelededit1.Text);
          end;
        end;
        listbox1.Items.Add(inttostr(zufall));
      end;
  if radiobutton1.Checked = (true) then
    begin
    zufall:= random(anzahl) + 1;
      case zufall of
        1 : memo1.lines.add('Slot: ' + labelededit1.Text);
        2: memo1.lines.add('Slot: ' + labelededit2.Text);
        3: memo1.lines.add('Slot: ' + labelededit3.Text);
        4: memo1.lines.add('Slot: ' + labelededit4.Text);
        5: memo1.lines.add('Slot: ' + labelededit5.Text);
        6: memo1.lines.add('Slot: ' + labelededit6.Text);
        7: memo1.lines.add('Slot: ' + labelededit7.Text);
        8: memo1.lines.add('Slot: ' + labelededit8.Text);
        9: memo1.lines.add('Slot: ' + labelededit9.Text);
        10: memo1.lines.add('Slot: ' + labelededit10.Text);
        11: memo1.lines.add('Slot: ' + labelededit11.Text);
        12: memo1.lines.add('Slot: ' + labelededit12.Text);
      end;
    end;
end;
Weiß nicht ob ich irgendwas Falsch gemacht habe denn ich kenne mich noch nicht so gut mit Delphi aus hatte es erst 1/2 jahr in der Schule.

mfg
  Mit Zitat antworten Zitat