![]() |
Re: Zufals-Boolean erzeugen
Es stimmt schon, diese "Extremlösungen" sind doch zufällig. Ich wollte halt eine "gleichmäßige" Lösung haben.
Dann muss Random erst mal reichen... ;-) Gruß, ManuMF P.S.: Ursprünglich wollte ich ja nur wissen, ob es in Delphi so was wie "function RandomBool;" gibt. |
Re: Zufals-Boolean erzeugen
Zitat:
Greetz Sergej |
Re: Zufals-Boolean erzeugen
Wenn du eine 'gleichmäßige' Lösung haben willst, musst du dir ein Array of Boolean nehmen, eine hälfte auf true, die andere auf false setzen und das Array dann mischen. So bekommst du vielleicht das, was du haben willst.
|
Re: Zufals-Boolean erzeugen
Zitat:
:) Und mit welchem 'zufälligen' Algorithmus willst du das Array mischen? Da kannst du auch gleich Random (oder was entsprechendes Eigenes) nehmen... Greetz Sergej |
Re: Zufals-Boolean erzeugen
Zitat:
|
Re: Zufals-Boolean erzeugen
Mit Random treten sie aber auch gleichmäßig auf. Außerdem kann es bei deiner Lösung durchaus genauso vorkommen, dass man 10 mal hintereinander true bekommt oder?
Greetz Sergej |
Re: Zufals-Boolean erzeugen
10 mal hintereinander True kann schon passieren, aber in der Gesamtheit ist es garantiert so, dass es gleichviele True wie False innerhalb des Arrays gibt.
|
Re: Zufals-Boolean erzeugen
Erklärt mir mal jemand, warum man dann nicht gleich Modulo (von 2) von einer normalen Pseudozufallszahl nimmt und 0 oder 1 in einen Boolean castet?
|
Re: Zufals-Boolean erzeugen
Naja, da hast du Zufall, d.h. es kann sein, dass du bei 1000 Zufallszahlen 510 Ungerade und 490 Gerade hast und dann eben auch 510 False und 490 True.
Kleines Beispiel:
Delphi-Quellcode:
Jetzt muss man dass noch durchmischen irgendwie...
Var B:Array [1..1000] of Boolean;
i:Integer; for i:=1 to 500 do B[i]:=True; for i:=501 to 1000 do B[i]:=False; Ihr werdet mir doch jetzt alle zustimmen, dass in diesem Array dann auf jeden Fall 500 True und 500 False sind, diese aber in einer "zufälligen" Reihenfolge vermischt. Grüße Benjamin |
Re: Zufals-Boolean erzeugen
warum nicht einfach so:
Delphi-Quellcode:
?
var Bool: Boolean;
begin Bool := Random(2) = 1; end; oder noch besser mit ner Wahrscheinlichkeit:
Delphi-Quellcode:
bei diesem Code wird mit einer Wahrscheinlichkeit von 25% "Bool" True enthalten. (beim ersten Code sinds 50%)
var Bool: Boolean;
p: Double; begin p := 0.25; //nur ein Beispiel, aber p sollte 0 <= p < 1 sein. Bool := Random < p; end; und wieso sollte der zufallsgenerator erst ab 100 würfen funktionieren? weil erst ab 100 würfen alle zahlen gleich oft vorkommen, aber bei meinetwegen bei 10 nicht? that's zufall, baby! ;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20: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