Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi stringgrid (https://www.delphipraxis.net/114998-stringgrid.html)

mkinzler 4. Jun 2008 18:34

Re: stringgrid
 
Zitat:

Zitat von taaktaak
Moin, Moin,

mir kommt da noch etwas anderes seltsam vor:

Delphi-Quellcode:
h := zahlen[z1];
zahlen[z1] := z2;
zahlen[z1] := h;
Sollte es vielleicht so gedacht sein?

Delphi-Quellcode:
h := zahlen[z1];
zahlen[z1] := zahlen[z2];
zahlen[z2] := h;

Natürlich :oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops:

taaktaak 4. Jun 2008 19:44

Re: stringgrid
 
Don't worry!

Im Eifer des Gefechts kann das schon mal passieren. Hatte mir heute morgen mal das Ergebnis angeschaut: Der Algorithmus scheint mir nicht besonders effektiv.

Ein Blick in meinen Fundus brachte dann eine fast identische Procedur zum Vorschein, in der ich nur einen Index über Random() bestimme, der zweite Index wird einfach nur über den Schleifenzähler bereitgestellt. Der Geschwindigkeitsvorteil wird aber vermutlich nicht ins Gewicht fallen. Das Ergebnis ist mit der hier vorgestellten Prozedur vergleichbar.

Ich denke, wenn eine "gute" Mischung wichtig ist, dann müsste man noch einen anderen Weg gehen...

bluesbear 4. Jun 2008 20:01

Re: stringgrid
 
Also effektiv ist er, wenn man mal die Tippfehler vernachlässigt.
Ist er auch effizient? Ich glaube, das spielt bei der Anwendung keine Rolle. Wildes Vertauschen klappt immer <g>.

taaktaak 4. Jun 2008 20:08

Re: stringgrid
 
Hmmm, meine Stichproben haben ergeben, dass manchmal mehrere Zahlenwerte (wieder?) in der ursprünglichen Reihenfolge standen. Nun war ja nicht die Rede davon, dass dies ausgeschlossen werden muss. Aber von einer guten Verwürfelung möchte ich eigentlich erwarten, dass die ursprüngliche Reihenfolge nicht gleich in mehreren Fällen beibehalten wird - oder ist meine Erwartung falsch?

Noobinator 5. Jun 2008 13:26

Re: stringgrid
 
gerade abgetippt:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var Zahlen:set of Byte;
    rand,i,j:integer;
begin
randomize; //Zufallsgenerator initialisieren
Zahlen := []; //leere Menge anlegen

for i := 0 to 9 do //Zeilen und Spalten durchgehen
  for j := 0 to 9 do
    begin
      rand := random(100) + 1; //zufallszahl suchen
       while rand in Zahlen do //schauen ob schon vorhanden, wenn ja neue
           rand := random(100) + 1;
       include(zahlen,rand); //hinzufügen zu bereits benutzen Zahlen
       stringgrid1.Cells[i,j] := IntToStr(rand); //reinschreiben
    end;
end;
Achtung: Las Vegas Algo - Laufzeit nicht gesichert.

DeddyH 5. Jun 2008 13:28

Re: stringgrid
 
Das kommt mir irgendwie bekannt vor :lol: .

Noobinator 5. Jun 2008 13:31

Re: stringgrid
 
Zitat:

Zitat von DeddyH
Das kommt mir irgendwie bekannt vor :lol: .

OT: :P


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:22 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz