![]() |
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 |
Re: Zufalsgenerator - Zahlen auslassen ?
Delphi-Quellcode:
Dieser Code füllt dein Array Used mit 10 unterschiedlichen Zahlen zwischen 1 und 10.
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; Beware: untested. |
Re: Zufalsgenerator - Zahlen auslassen ?
Werde ich mal ausprobieren! danke
dazu noch ne Frage : wird die 0 mitgenutzt ? |
Re: Zufalsgenerator - Zahlen auslassen ?
Nein. Random(10)+1 produziert Zahlen zwischen 1 und 10, wenn du das +1 wegnimmst, zwischen 0 und 9.
|
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; |
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.
|
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; |
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! |
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 |
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 14:12 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