AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Random ohne doppelte Zahlen

Ein Thema von D0N · begonnen am 2. Okt 2008 · letzter Beitrag vom 4. Okt 2008
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.164 Beiträge
 
Delphi 11 Alexandria
 
#11

Re: Random ohne doppelte Zahlen

  Alt 3. Okt 2008, 13:25
Hallo,

hier würde sich auch ein Array vom Typ Boolean anbieten.

Pseudocode:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var My_LisboxIndex: Array[1..(Listbox.Count)] of Boolean;
     i, z: Integer;
begin
  for i:= 1 to (Listbox.Count) do My_LisboxIndex[i]:=false;
  for i:=1 to (Listbox.Count) do begin
   repeat
    z:=random(Listbox.Count) + 1
   until My_LisboxIndex[z] = false;
   My_LisboxIndex[z]:=true;
  end;
  for i:=1 to (Listbox.Count)] do
   if My_LisboxIndex[i] then Listbox.TopIndex := (i); //oder halt irgendwas anderes an dieser Stelle tun...
end;
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.024 Beiträge
 
Delphi 12 Athens
 
#12

Re: Random ohne doppelte Zahlen

  Alt 3. Okt 2008, 13:40
Ich gehe mal davon aus, daß wir 12 Namen haben, die in labelededit1..12 stehen. Dann sähe eine Lösung (analog des Vorschlags von Z4ppy) so aus:

Delphi-Quellcode:
var
  list: TStringList;
  I, N: Integer;
begin
  list := TStringList.Create;
  try
    { Liste mit den Einträgen füllen }
    list.Add(labelededit1.Text);
    ...
    list.Add(labelededit12.Text);
    
    N := list.Count;
    for I:=1 to N do begin
      if list.Count < 2 then
        N := Random(list.Count)
      else
        N := 0;
      memo1.Lines.Add(IntToStr(I) + ':' + list[N]);
      list.Delete(N);
    end;
    Assert(list.Count = 0, 'Liste nicht leer!');
  finally
    list.Free;
  end;
end;
Uwe Raabe
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#13

Re: Random ohne doppelte Zahlen

  Alt 4. Okt 2008, 07:15
Den Code verstehe ich nicht.

Zitat von SirTwist:
In ... "The Art Of Computer Programming" von Donald E. Knuth ... ist beschrieben...
Das ist der Fisher-Yates Algorithmus.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz