AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Zufals-Boolean erzeugen

Ein Thema von ManuMF · begonnen am 25. Sep 2005 · letzter Beitrag vom 27. Sep 2005
Antwort Antwort
Seite 2 von 6     12 34     Letzte » 
Benutzerbild von ManuMF
ManuMF

Registriert seit: 11. Jul 2005
1.016 Beiträge
 
Delphi 6 Personal
 
#11

Re: Zufals-Boolean erzeugen

  Alt 25. Sep 2005, 18:30
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.
Gruß,
ManuMF

Endlich hab ich was Positives an Vista entdeckt: Das mitgelieferte Mahjongg
  Mit Zitat antworten Zitat
Sergej

Registriert seit: 12. Jun 2003
Ort: Stuttgart
169 Beiträge
 
#12

Re: Zufals-Boolean erzeugen

  Alt 25. Sep 2005, 18:32
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
Ceterum censeo cartaginem esse delendam
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#13

Re: Zufals-Boolean erzeugen

  Alt 25. Sep 2005, 18:34
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.
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Sergej

Registriert seit: 12. Jun 2003
Ort: Stuttgart
169 Beiträge
 
#14

Re: Zufals-Boolean erzeugen

  Alt 25. Sep 2005, 18:36
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
Ceterum censeo cartaginem esse delendam
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#15

Re: Zufals-Boolean erzeugen

  Alt 25. Sep 2005, 18:47
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.
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Sergej

Registriert seit: 12. Jun 2003
Ort: Stuttgart
169 Beiträge
 
#16

Re: Zufals-Boolean erzeugen

  Alt 25. Sep 2005, 19:22
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
Ceterum censeo cartaginem esse delendam
  Mit Zitat antworten Zitat
BenjaminH

Registriert seit: 14. Okt 2004
Ort: Freiburg im Breisgau
713 Beiträge
 
Turbo Delphi für Win32
 
#17

Re: Zufals-Boolean erzeugen

  Alt 25. Sep 2005, 19:26
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.
Benjamin
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#18

Re: Zufals-Boolean erzeugen

  Alt 25. Sep 2005, 19:29
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?
  Mit Zitat antworten Zitat
BenjaminH

Registriert seit: 14. Okt 2004
Ort: Freiburg im Breisgau
713 Beiträge
 
Turbo Delphi für Win32
 
#19

Re: Zufals-Boolean erzeugen

  Alt 25. Sep 2005, 19:34
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
Benjamin
  Mit Zitat antworten Zitat
Benutzerbild von BlackJack
BlackJack

Registriert seit: 2. Jul 2005
Ort: Coesfeld
246 Beiträge
 
Delphi 2005 Personal
 
#20

Re: Zufals-Boolean erzeugen

  Alt 25. Sep 2005, 19:41
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!
See my shadow changing, stretching up and over me.
Soften this old armor. Hoping I can clear the way
By stepping through my shadow, coming out the other side.
Step into the shadow. Forty six and two are just ahead of me.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:29 Uhr.
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