Delphi-PRAXiS
Seite 2 von 6     12 34     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Zufals-Boolean erzeugen (https://www.delphipraxis.net/53929-zufals-boolean-erzeugen.html)

ManuMF 25. Sep 2005 17:30

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.

Sergej 25. Sep 2005 17:32

Re: Zufals-Boolean erzeugen
 
Zitat:

Zitat von ManuMF
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

Ich glaube da liegt dein Denkfehler. Die Verteilung _ist_ gleichmäßig, nur wirst du sie bei i < 1000 Durchläufen wohl nicht erkennen.

Greetz Sergej

Nikolas 25. Sep 2005 17:34

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.

Sergej 25. Sep 2005 17:36

Re: Zufals-Boolean erzeugen
 
Zitat:

Zitat von Toxman
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.


:) Und mit welchem 'zufälligen' Algorithmus willst du das Array mischen? Da kannst du auch gleich Random (oder was entsprechendes Eigenes) nehmen...


Greetz Sergej

Nikolas 25. Sep 2005 17:47

Re: Zufals-Boolean erzeugen
 
Zitat:

Da kannst du auch gleich Random (oder was entsprechendes Eigenes) nehmen...
Nicht ganz. Mit dem Array kann ich garantieren, dass True und False immer gleich häufig auftreten, dass kann ich bei Random nicht.

Sergej 25. Sep 2005 18:22

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

BenjaminH 25. Sep 2005 18:26

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.

Olli 25. Sep 2005 18:29

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?

BenjaminH 25. Sep 2005 18:34

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:
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;
Jetzt muss man dass noch durchmischen irgendwie...
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

BlackJack 25. Sep 2005 18:41

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:
var Bool: Boolean;
    p: Double;
begin
p := 0.25; //nur ein Beispiel, aber p sollte 0 <= p < 1 sein.
Bool := Random < p;
end;
bei diesem Code wird mit einer Wahrscheinlichkeit von 25% "Bool" True enthalten. (beim ersten Code sinds 50%)

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 02:45 Uhr.
Seite 2 von 6     12 34     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz