![]() |
Re: Zufalsgenerator - Zahlen auslassen ?
OK Super es läuft schonmal.
Beim Durchgehen lässt er den letzten aber immer aus! im Array bleibt 0 stehen. es kommen nur 9 von 10 Messages mit den Zahlen! |
Re: Zufalsgenerator - Zahlen auslassen ?
Dann liegt es an dir, der Code funktioniert bei mir perfekt, nirgends steht mehr 0 drin.
|
Re: Zufalsgenerator - Zahlen auslassen ?
Jo war auch mein Fehler,
musste ID.length noch +1 nehmen damit der letzte durchgang mitkommt! BESTEN DANK ERSTMAL FÜR DIE HILFE |
Re: Zufalsgenerator - Zahlen auslassen ?
Jaja, ziehe zufällig Zahlen aus 1 bis 10 ohne zurücklegen, das Thema hatten wir schon merhmals, es nennt sich Lotto-Ziehungen.
![]()
Delphi-Quellcode:
Gruß hagen
type
TZahlen = array of Integer; procedure Lotto(var Sortiert,Gezogene: TZahlen; Ziehungen: Integer = 6; Elemente: Integer = 49); var I,J,K,N: Integer; begin Sortiert := nil; // stellt sicher das Sortiert <> Gezogene ist Gezogene := nil; if Ziehungen > Elemente then raise Exception.Create('Man kann nicht mehr Kugeln ziehen als in der Urne sind'); SetLength(Sortiert, Ziehungen); SetLength(Gezogene, Ziehungen); for I := 0 to Ziehungen -1 do begin K := 0; N := Random(Elemente - I) + 1; for J := 0 to I -1 do if N >= Sortiert[J] then begin Inc(N); Inc(K); end else Break; for J := I downto K +1 do Sortiert[J] := Sortiert[J -1]; Sortiert[K] := N; Gezogene[I] := N; end; end; procedure Test; procedure Print(const Title: String; const Zahlen: TZahlen); var I: Integer; begin Write(Title); for I := 0 to High(Zahlen) do Write(Zahlen[I]:4); WriteLn; end; var Sortiert,Gezogene: TZahlen; begin Lotto(Sortiert, Gezogene, 10, 10); Print('gezogene : ', Gezogene); Print('sortiert : ', Sortiert); WriteLn; end; |
Re: Zufalsgenerator - Zahlen auslassen ?
Delphi-Quellcode:
Müsstest du so aufrufen: zielarray:= ZufallIA(1,10,10);
function ZufallIA(loinp,hiinp,laenge:integer):AoInt;
{type AoInt=array of integer;}//Wenn nötig deklarieren! var pos,laenge,i:integer; puffer:AoInt; procedure ZufalloD(var a:AoInt;lo,hi:integer); var z,b:integer; begin b := hi-lo; z:=Random(b)+lo; a[pos] :=z; inc(pos); if(lo<z)and(pos<=laenge) then ZufalloD(a,lo,z-1); if(hi>z)and(pos<=laenge) then ZufalloD(a,z+1,hi); end; begin randomize; setlength(puffer,laenge); pos:=low(puffer); ZufalloD(puffer,loinp,hiinp); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21: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