Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Zahlen 1-4 mischen (https://www.delphipraxis.net/41260-zahlen-1-4-mischen.html)

Skyrunner2 28. Feb 2005 18:51


Zahlen 1-4 mischen
 
wie kann ich am besten die zahlen von 1 bis 4 mischen?

Delphi-Quellcode:
for i:=0 to 3 do
  liste[i]:=i+1;
 
randomize;
i:=random(3);
j:=random(3);
hlp:=liste[i];
liste[i]:=liste[j];
liste[j]:=hlp;
geht irgent wie nicht...

tinibeenie 28. Feb 2005 19:19

Re: Zahlen 1-4 mischen
 
Hallo Skyrunner2!
Damit du die Zahlen von 1-4 bekommst, musst du es so machen:
Delphi-Quellcode:
i:=random(4)+1;
j:=random(4)+1;
Sonst werden die Zahlen von 0-3 gemischt.

Khabarakh 28. Feb 2005 19:27

Re: Zahlen 1-4 mischen
 
Zitat:

Zitat von tinibeenie
Hallo Skyrunner2!
Damit du die Zahlen von 1-4 bekommst, musst du es so machen:
Delphi-Quellcode:
i:=random(4)+1;
j:=random(4)+1;
Sonst werden die Zahlen von 0-3 gemischt.

Im Beispiel greift er aber nicht auf den Wert sondern den Index zu und der beginnt eben mit 0. Einst ist dennoch richtig: Random(x) ist von 0 bis x-1, also
Delphi-Quellcode:
i:=random(4);
j:=random(4);
Außerdem randomize nie mehrmals aufrufen!
Sonst kann ich mit
Zitat:

geht irgendwie nicht...
nicht viel anfangen.

Skyrunner2 28. Feb 2005 19:28

Re: Zahlen 1-4 mischen
 
ah danke, aber habe das problem schon ander gelöst und funktioniert perfekt...


wenn jemand eine funktion haben will um eine TQueue Aufzumischen und ein Zufälliges element auszspucken haben will:



Delphi-Quellcode:
function RandomListItem(Q:TQueue):Pointer;
var i:integer;
    BackupQ:TQueue;
begin
LogForm.APPEND('########Tmaze.PrimGenerator.RandomListItem########');
   BackupQ:=TQueue.Create;
   randomize;
   for i:=0 to random(Q.Count) do
        BackupQ.Push(Q.Pop);
   LogForm.APPEND('.RandomListItem ## 1st loop');
   for i:=0 to BackupQ.Count-1 do
        Q.Push(BackupQ.pop);
   Backupq.Free;
   RandomListItem:=Q.Pop;
end;
hehe ohne Backupq.Free;geht memory nutzung ganz ganz schnell hoch! :D


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:31 Uhr.

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