Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Zufalsgenerator - Zahlen auslassen ? (https://www.delphipraxis.net/32189-zufalsgenerator-zahlen-auslassen.html)

Cyberbob_at_tot 20. Okt 2004 11:20

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!

Dax 20. Okt 2004 11:24

Re: Zufalsgenerator - Zahlen auslassen ?
 
Dann liegt es an dir, der Code funktioniert bei mir perfekt, nirgends steht mehr 0 drin.

Cyberbob_at_tot 20. Okt 2004 11:27

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

negaH 20. Okt 2004 11:29

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.

http://www.delphipraxis.net/internal...ct.php?t=10946

Delphi-Quellcode:
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;
Gruß hagen

mung 25. Okt 2004 13:10

Re: Zufalsgenerator - Zahlen auslassen ?
 
Delphi-Quellcode:
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;
Müsstest du so aufrufen: zielarray:= ZufallIA(1,10,10);


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:31 Uhr.
Seite 3 von 3     123   

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