Delphi-PRAXiS
Seite 1 von 3  1 23      

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 09:24


Zufalsgenerator - Zahlen auslassen ?
 
Guten morgen zusammen
habe da mal ne Frage,
wenn ich aus 10 Zufalszahlen nehme und nach jeder die gezogene Zahl aus dem Pool der 10 nehme.
Also beim zweiten Durchgang eine zufalszahl aus 9 usw.

diese Zahl die entfernt wird kann aber auch mitten drin sein also auch die 5, somit muss aus 10 aber ohne die 5!
Hoffe ich habe es so erklärt das man es versteht!

Habt ihr vorschläge ?

THX

Cyberbob

Dax 20. Okt 2004 09:28

Re: Zufalsgenerator - Zahlen auslassen ?
 
Delphi-Quellcode:
var Used: array[1..10] of Integer; i, x, t: Integer;
begin
  Randomize;
  i := 1;
  while i <> 11 do
  begin
    t := Random(10)+1;
    for x := 1 to i do
      if Used[x] = t then Break;
    if x = i+1 then
    begin
      Used[x] := t;
      Inc(i);
    end;
  end;
end;
Dieser Code füllt dein Array Used mit 10 unterschiedlichen Zahlen zwischen 1 und 10.
Beware: untested.

Cyberbob_at_tot 20. Okt 2004 09:31

Re: Zufalsgenerator - Zahlen auslassen ?
 
Werde ich mal ausprobieren! danke

dazu noch ne Frage : wird die 0 mitgenutzt ?

Dax 20. Okt 2004 09:32

Re: Zufalsgenerator - Zahlen auslassen ?
 
Nein. Random(10)+1 produziert Zahlen zwischen 1 und 10, wenn du das +1 wegnimmst, zwischen 0 und 9.

Cyberbob_at_tot 20. Okt 2004 10:00

Re: Zufalsgenerator - Zahlen auslassen ?
 
Habe es nun versucht leider ist es eine entlosschleife. wenn ich mir den Inhalt des Arrays anzeigen lassen will kommt nur eine große Zahle so 328777777 oder so!

Delphi-Quellcode:
Var
V:integer;
Used: array[1..10] of Integer;
i: Integer;
begin
Randomize;
  i := 1;
  Showmessage(inttostr(ID.length));
  while i <> ID.length do
  begin
    zahl:=Random(ID.length)+1;
    for V := 1 to i do
      Showmessage(inttostr(Used[V]));
      if Used[V] = zahl then Break;
      if V = i+1 then begin
                      Used[V] := zahl;
                      Inc(V);
      end;
  end;

Treffnix 20. Okt 2004 10:06

Re: Zufalsgenerator - Zahlen auslassen ?
 
Natürlich ist es eine Endlosschleife. Die Schleife läuft bis i = Id.Length ( <- was ist überhaupt ID ) ist. Du erhöhst aber nirgendwo den Wert von i. Also wird das nie zutreffen. Ausserdem würd ich nicht auf i <> id.length sondern auf i < id.length prüfen.

Dax 20. Okt 2004 10:06

Re: Zufalsgenerator - Zahlen auslassen ?
 
Oh... so stimmts:
Delphi-Quellcode:
var Used: array[1..10] of Integer; i, x, t: Integer;
begin
  Randomize;
  i := 1;
  FillChar(Used[1], 10*sizeof(Uses[1]), 0);
  while i <> 11 do
  begin
    t := Random(10)+1;
    for x := 1 to i do
      if Used[x] = t then Break;
    if x = i+1 then
    begin
      Used[i] := t;
      Inc(i);
    end;
  end;
end;

Cyberbob_at_tot 20. Okt 2004 10:15

Re: Zufalsgenerator - Zahlen auslassen ?
 
ID.length ist die Länge einer Liste.
Er soll also in der LIste zufällig eine Zeile finden! und diese nicht nocheinmal nehmen!

Cyberbob_at_tot 20. Okt 2004 10:31

Re: Zufalsgenerator - Zahlen auslassen ?
 
Habe es nun mit der Verbesserubg ausprobiert aber leider kommen immer noch welche Doppelt!
Bis zur 4ten Stelle passt das Array dann schreib er nix mehr rein!

Soll ich euch das Programm mal hochladen ?

Was ich noch nicht verstehe sind die Zeilen...
FillChar(Used[1], 10, 0);
used[1] := 9;

BIG THX

Dax 20. Okt 2004 10:35

Re: Zufalsgenerator - Zahlen auslassen ?
 
:oops: Wie hat sich denn das 9-Assignement da eingeschlichen?

Aber du musst statt '10' schon die Länge des Arrays angeben, sonst funktionierts nicht.

Das FillChar[...] leert das Array, es wird komplett mit Nullen gefüllt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:28 Uhr.
Seite 1 von 3  1 23      

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