![]() |
random
hi! ich möchte eine Lottoziehung simulieren. deshalb habe ich randomize (bzw. random) verwendet. aber wie bekannt ist, gehen die zahlen bei lotto erst ab 1 los. jetzt hatte ich mir eigentlich gedacht, wenn ich eingebe
v:=random(49)+1; dass keine 0 kommen sollte. denkste. wie mach ich das? kann mir BITTE wer helfen? lg ~glitterangel |
Re: random
Das stimmt aber schon so :gruebel:
|
Hi,
also ich hab mal ein Würfel programmiert und da hab ich's exakt so gemacht. Bei mir funktioniert's! :| Deshalb -> kA! |
Re: random
Hallo GlitterAngel87,
hast du auch einen Randomize()-Aufruf im OnCreate des Forms? Evtl. ist das das Problem ;) Greetz alcaeus |
Re: random
Auch ohne Randomize dürfte keine 0 kommen. Poste doch mal die ganze Funktion.
|
Re: random
Zitat:
|
Re: random
Exakt.
Zitat:
|
Re: random
das ist das ganze! und ich schwör euch: gestern sind mir sooo oft 0 gekommen, da hab ich mir gedacht, ich dreh gleich durch!
Delphi-Quellcode:
wo kann der fehler liegen?
procedure TForm1.BitBtn1Click(Sender: TObject);
begin for i:= 1 to 6 do begin randomize; a[i]:=random(49)+1; end; repeat c:=true; for i:= 1 to 5 do begin if a[i]>a[i+1] then begin h:=a[i]; a[i]:=a[i+1]; a[i+1]:=h; c:=false; end; end; until c; Label1.Caption:= IntToStr(a[1]); Label2.Caption:= IntToStr(a[2]); Label3.Caption:= IntToStr(a[3]); Label4.Caption:= IntToStr(a[4]); Label5.Caption:= IntToStr(a[5]); Label6.Caption:= IntToStr(a[6]); end; [edit=alcaeus]Delphi-Tags eingefuegt. In Zukunft bitte selbst machen. Danke Mfg, alcaeus[/edit] |
Re: random
Hallo Adela,
die Funktion Random() ist zwar ganz nützlich für das Ziehen der Lottozahlen, aber alleine schafft sie das dann doch nicht. Die Funktion Random() garantiert dir über einen ausgeklügelten mathematischen Ansatz eine ausreichend gute Gleichverteilung der Funktionswerte bei entsprechend großen Stichproben, aber sie garantiert dir keine Duplikatfreiheit bei den ersten 6 Werten. Du wirst dir etwas überlegen müssen, damit bei der Ziehung der zweiten Zahl die erste nicht wieder Teil der Ziehungsmenge ist. Grüße vom marabu Ein Beispiel:
Delphi-Quellcode:
type
TOddSet = set of byte; var Ziehung: TOddset; procedure Draw(count, total: byte; var oddSet: TOddSet); begin oddSet := []; while SizeOf(oddSet) < count do oddSet := oddSet + [Succ(Random(total))]; end; |
Re: random
Also ich habs gerade mal getestet und ich hatte nicht einmal ne 0. Selbst wenn ich die Range auf 1 geändert habe. Zum Lottospielen solltest du aber noch überprüfen, ob eine Zahl bereits vorkam.
Wie hast du denn die Variablen deklariert? Habs jetzt mal so angenommen:
Delphi-Quellcode:
var i, h: Integer;
c: Boolean; a: array[1..6] of Integer; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:04 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