![]() |
Re: Zahlen "verteilen"
dann bekommt man keine vier gleich großen gruppen, und ich bin davon ausgegangen, dass das sein soll. sonst hätte ich es auch so vorgeschlagen. muss man den fragesteller fragen, wie er es haben will.
|
Re: Zahlen "verteilen"
Zitat:
|
Re: Zahlen "verteilen"
das schon. aber wenn es nicht klar ist, dann:
Zitat:
|
Re: Zahlen "verteilen"
Hallo,
ich hab das jetzt einigermaßen hinbekommen, ich hab jetzt Code mit dem ich 8 Zahlen aus der Liste mit den Zahlen von 1-32 auswählen kann.
Delphi-Quellcode:
Aber es klappt nicht alles:
procedure TForm1.Button1Click(Sender: TObject);
var a,b,c,d,e, Zahl: integer; SchonEnthalten: boolean; begin List := TStringList.Create; List2 := TStringList.Create; for a := 1 to 32 do begin List.Add(inttostr(a)); end; while List2.Count < 8 do begin Zahl := List.IndexOf(inttostr(random(list.Count))); for b := 0 to List2.Count - 1 do begin if Zahl = strtoint(List2.Strings[b]) then SchonEnthalten := true else SchonEnthalten := false; end; if SchonEnthalten = false then List2.Add(IntToStr(Zahl)); end; Memo1.Lines.Add(List2.Text); end; end. 1.Warum sind die Zahlen immer die gleichen? 2.Warum bekomme ich manchmal eine -1 als Zahl? Gruß Spurius |
Re: Zahlen "verteilen"
So, ich bin weitergekommen mit diesem Code:
Delphi-Quellcode:
Bitte beantwortet mir noch eine Frage:
var
Form1: TForm1; List, List2: TStringlist; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var a,b,Zahl: integer; Disc: boolean; begin randomize; List := TStringlist.Create; for a := 1 to 32 do begin List.Add(inttostr(a)); end; while memo1.Lines.Count < 8 do begin Zahl := random(32); for b := 1 to memo1.Lines.Count do begin if inttostr(Zahl) = Memo1.Lines[b] then Disc := False; end; if Disc = true then Memo1.Lines.Add(IntToStr(Zahl)); Disc := true; end; end; end. Wie kann ich verhindern, dass eine 0 mit angezeigt wird? Wird bei random(32) die 0 mitverwendet oder geht das erst ab 1 los? |
Re: Zahlen "verteilen"
Bei Random wird die 0 afaik mitverwendet.
Delphi-Quellcode:
erzeugt ganzzahlige Zufallszahlen mit einem minimum von 0 und einem maximum von 31.
Random(32)
Du müsstest also schreiben:
Delphi-Quellcode:
zahl := random (32);
zahl := zahl + 1; |
Re: Zahlen "verteilen"
Ok, noch ne Frage: Was müsste der Code aussehen wenn ich anstatt dem Memo list2 verwenden will?
|
Re: Zahlen "verteilen"
Hallo,
wenn du random(32) verwendest nimmt er zufällig die zahlen zwischen 0-31 und nicht 1-32. Wenn du zwischen 1 und 32 eine zahl willst nimm doch einfach random(32)+1, dann nimmt der Rechner die Zahlen zwischen 0 und 31 und rechnet jedesmal +1 dazu. whiteshark |
Re: Zahlen "verteilen"
Zitat:
|
Re: Zahlen "verteilen"
Wie jetzt? Ich hatte es bei der List mit IndexOf versucht, aber des hat net so ganz hingehaun. Ich mein halt, durch was muss ich z.b. das Memo1.Lines[b] ersetzen? Die Zahlen sind ja keine Objekte sondern nur Variablen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:22 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