Delphi-PRAXiS
Seite 2 von 2     12   

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)

negaH 27. Sep 2005 14:02

Re: Zufals-Boolean erzeugen
 
Ein weiteres Beispiel

Delphi-Quellcode:
function BooleanToString3(Value: Boolean): String;
begin
  if Value = True then Result := 'True'
    else Result := 'False';
end;

begin
  WriteLn( BooleanToString3(Boolean(2)) );
end;
Man erwartet die Ausgabe von "True" bekommt aber "False", obwohl der Source in BooleanToString3() absolut korrekt ist.

Statt AV nun ein falscher Programmablauf den es gilt als Programmierer langwierig zu debuggen.

Gruß Hagen

TeronG 27. Sep 2005 14:06

Re: Zufals-Boolean erzeugen
 
Zitat:

... sind doch zufällig. Ich wollte halt eine "gleichmäßige" Lösung haben ...
Zitat:

Zitat von Toxman
Es geht schon nicht mehr darum, einen zufälligen Boolean zu bekommen, sondern Möglichkeiten zu garantieren (!) dass True und False gleich oft erscheinen.

:gruebel: Dann müsst "ihr" aber den Titel ändern ... denn Zufälligkeit hat nix mit Gleichmäßigkeit zu tun ...

EDIT: jaja das wurde schon "mal" erwähnt ..

negaH 27. Sep 2005 14:12

Re: Zufals-Boolean erzeugen
 
Zitat:

Dann müsst "ihr" aber den Titel ändern ... denn Zufälligkeit hat nix mit Gleichmäßigkeit zu tun ...
Tja, und dies ist eben nicht ganz richtig. Zufall erzeugt schon im Mittel eine absolute Gleichverteilung. Je länger eine Zufallskette von Ereignissen wird desto unwahrscheinlicher werden alle WorstCase Szenarien. ZB. bei 1000 Boolans per Zufall erzeugt ist eine Kette aus lauter TRUE's mit 1/2^1000 sehr sehr unwahrscheinlich, aber denoch möglich. Im Allgemeinen werden es aber ca. 50% TRUE/FALSE Werte enthalten sein.

Zufall tendiert also im Gegensatz zu Chaos immer zu einer Gleichverteilung bzw. Uniformität. Es ist schon kourios, aber mathematisch gesehen besteht beim Zufall der relevante Unterschied in der Größe der Datenmenge die man analysiert. Je kleiner die Datenmenge ist des ungleichverteilter, chaosartiger erscheint diese Menge. Je größer die Menge wird desto Uniformer und gleichverteilt werden die Ereignisse auftreten. Zufall ist also abhängig von der Betrachtungsweise.

Gruß Hagen

Nikolas 27. Sep 2005 14:12

Re: Zufals-Boolean erzeugen
 
Zitat:

Dann müsst "ihr" aber den Titel ändern ... denn Zufälligkeit hat nix mit Gleichmäßigkeit zu tun ...
Das sehe ich nicht so. Wenn du das durchmischte array nimmst, bringt dir Anfangs die Information über die Verteilung von True und False recht wenig, wenn du den nächsten Wert vorraussagen willst. Gegen Ende wird die Vorraussage zwar einfacher, ab fast nie sicher.

leddl 27. Sep 2005 14:16

Re: Zufals-Boolean erzeugen
 
Zitat:

Zitat von Toxman
Zitat:

Dann müsst "ihr" aber den Titel ändern ... denn Zufälligkeit hat nix mit Gleichmäßigkeit zu tun ...
Das sehe ich nicht so. Wenn du das durchmischte array nimmst, bringt dir Anfangs die Information über die Verteilung von True und False recht wenig, wenn du den nächsten Wert vorraussagen willst. Gegen Ende wird die Vorraussage zwar einfacher, ab fast nie sicher.

Aber "Zufall" bedeutet, daß du ein Experiment beliebig oft unter genau den gleichen Voraussetzungen wiederholen kannst. Das ist hier aber dann nicht so. Im schlimmsten Fall kannst du nach 500 erzeugten Werte mit Sicherheit sagen, was die nächsten 500 ergeben. Das hat mit Zufall nichts mehr zu tun ;)

negaH 27. Sep 2005 14:19

Re: Zufals-Boolean erzeugen
 
@Toxman:

korrekt. Nicht die Gleichverteilung ist ein Indiz für Zufälligkeit, sondern so Vorhersagewahrscheinlichkeit des nächsten zu erwartenden Wertes. Man wird sich bei dieser Vorhersage mit exakt 50% irren oder ebnen richtig liegen, und das ist zufälliges Raten !

Gruß Hagen

Nikolas 27. Sep 2005 14:20

Re: Zufals-Boolean erzeugen
 
Zitat:

Aber "Zufall" bedeutet, daß du ein Experiment beliebig oft unter genau den gleichen Voraussetzungen wiederholen kannst.
Warum dass denn? Es geht doch viel eher darum, dass die zufälligen Elemente in meinem Exement möglichst selten gleich sein sollten.

Ich habe weiter oben im Thread schon gesagt, dass ich diese Methode mit dem Array.Mischen nicht allzu toll finde, nur war es anscheinend dass, was gesucht war.

negaH 27. Sep 2005 14:27

Re: Zufals-Boolean erzeugen
 
@leddl:

Zitat:

Aber "Zufall" bedeutet, daß du ein Experiment beliebig oft unter genau den gleichen Voraussetzungen wiederholen kannst. Das ist hier aber dann nicht so. Im schlimmsten Fall kannst du nach 500 erzeugten Werte mit Sicherheit sagen, was die nächsten 500 ergeben. Das hat mit Zufall nichts mehr zu tun

Du widersprichst dich ja im selben Satz ;)

Ein Experiment beliebig oft exakt reproduzieren kann man nur OHNE Zufall.
Angenommenes Experiment

1 +1 = 2

Dies lässt sich jederzeit exakt reproduzieren.

1 + Random(10) = 2

lässt sich nicht beliebig oft reporduzieren.

ABER, statistich gesehen, also im Mittel werden wir nun feststellen das bei diesem Experiment exakt 1/10 aller Experimente korrekte Lösungen bringen, und 9/10'tel immer falsche.

Diese statistische Aussage ist nun jederzeit exakt reproduzierbar vorrausgesetzt man mancht in der statistischen Auswertung genügend viele sochler Experimente. Je geringer diese Anzahl an Experimenten ist desto weniger sind die Ergebnisse reproduzierbar, je mehr man von solchen Experimenten durchführt desto mehr wird die statistische Auswertung reproduzierbar und sich mit einer unendlich großen Anzahl von Experimenten wird sich exakt das mathematich vorrausberechnete Schema von 1/10'tel zi 9/10'tel ergeben.

Gruß Hagen

leddl 27. Sep 2005 14:28

Re: Zufals-Boolean erzeugen
 
Zitat:

Zitat von Toxman
Warum dass denn? Es geht doch viel eher darum, dass die zufälligen Elemente in meinem Exement möglichst selten gleich sein sollten.

Warum? Weil es die Definition eines Zufallsexperimentes ist. Darum! ;) Wenn du durch dein Eingreifen die Wahrscheinlichkeiten änderst, kann eben einfach nicht mehr von Zufälligkeit gesprochen werden.

leddl 27. Sep 2005 14:34

Re: Zufals-Boolean erzeugen
 
@Hagen:
Du hast mich falsch verstanden. Mit den Voraussetzungen meinte ich die Voraussetzungen, unter denen sich die Wahrscheinlichkeiten ergeben. Also zB die 6 Seiten eines Würfels. Hättest du einen Würfel, bei dem beim Werfen immer Stücke abbrechen, könntest du das ganze nicht mit den selben Wahrscheinlichkeiten (=^ Voraussetzungen) wiederholen und hast damit eine Verfälschung. Natürlich wäre das in gewisser Hinsicht immer noch Zufall, aber ich denke, du weißt, worauf ich hinauswollte.

negaH 27. Sep 2005 14:38

Re: Zufals-Boolean erzeugen
 
@Leddl:

auch korrekt ;) Du sprichst von "das Experiment" in der Einzahl und exakt da liegt die Differenz zwischen deiner Argumentation und der von Toxman oder mir.

Betrachte mal jeden Wert im Array[] der TRUE oder FALSE sein kann, als Einzel-Experminent. Würde das Array nun 1 solchen Boolean enthalten dann müsste man denoch das Experiment mehrmals wiederholen und würde dann zwei Antworten innerhalb der vielen Experimente erkennen. Nämlich 50% TRUE und 50% FALSE.

Die Frage nach der Reproduzierbarkeit ist auch eine Frage nach der Größe der Menge aller Experimente.
Betrachtest du jedes Experiment als Einzel-Experiment dann ist das Ergebnis in keinem Falle vorhersagbar. Betrachtest du aber die Ergebnisse vieler solcher Experimente dann ist es sehr wohl reproduzierbar.

Gruß Hagen

Nikolas 27. Sep 2005 14:39

Re: Zufals-Boolean erzeugen
 
Zitat:

Aber "Zufall" bedeutet, daß du ein Experiment beliebig oft unter genau den gleichen Voraussetzungen wiederholen kannst.
Zitat:

Mit den Voraussetzungen meinte ich die Voraussetzungen, unter denen sich die Wahrscheinlichkeiten ergeben.
Was hast du denn dann gegen mein Mischarray? Ich habe zu Beginn des Experiments genau die gleiche Ausgangslage, nämlich 500 True und 500 False. Jetzt wird das gemischt und los gehts.

leddl 27. Sep 2005 14:51

Re: Zufals-Boolean erzeugen
 
Zitat:

Zitat von Toxman
Zitat:

Aber "Zufall" bedeutet, daß du ein Experiment beliebig oft unter genau den gleichen Voraussetzungen wiederholen kannst.
Zitat:

Mit den Voraussetzungen meinte ich die Voraussetzungen, unter denen sich die Wahrscheinlichkeiten ergeben.
Was hast du denn dann gegen mein Mischarray? Ich habe zu Beginn des Experiments genau die gleiche Ausgangslage, nämlich 500 True und 500 False. Jetzt wird das gemischt und los gehts.

Ja und genau da setze ich an. Du setzt 500 Elemente auf TRUE, 500 auf FALSE. Natürlich kann man es jetzt so sehen, daß du für jedes Element 50% Wahrscheinlichkeit hast, daß es TRUE ist. Dadurch, daß du aber weißt, wieviele Elemente welchen Wert besitzen, und wieviele von jedem Wert du bereits gezogen hast, veränderst du die Wahrscheinlichkeit beim nächsten Element aber.
Beispiel:
Gehen wir davon aus, du hast bei den ersten 10 Elementen 7 mal TRUE und 3 mal FALSE gefunden. So, beim 11 Element hast du daher jetzt nur noch eine Wahrscheinlichkeit von 493/990 (bzw 497/990) für TRUE (bzw FALSE).
Würdest du allerdings vorher rein zufällig das Array bestücken, dann könnte man meiner Meinung nach schon eher von Zufall reden, da ja keine Wahrscheinlichkeiten für TRUE/FALSE bekannt sind und du daher davon ausgehen mußt, daß deine Zufallsverteilung am Beginn eine Gleichverteilung ergeben hat.

Oder hab ich diese ganze Array-Geschichte mißverstanden? Ich bin davon ausgegangen, daß das Array befüllt, durchmischt und dann von vorne nach hinten durchgegangen werden soll. Oder war gemeint, daß dann per Zufall ein Index ausgewählt wird? Dann wären wir ja wieder beim selben Fall wie ohne das Array und damit natürlich beim Zufall. (So gut es eben geht)

Zitat:

Zitat von negaH
auch korrekt Du sprichst von "das Experiment" in der Einzahl und exakt da liegt die Differenz zwischen deiner Argumentation und der von Toxman oder mir.

Betrachte mal jeden Wert im Array[] der TRUE oder FALSE sein kann, als Einzel-Experminent. Würde das Array nun 1 solchen Boolean enthalten dann müsste man denoch das Experiment mehrmals wiederholen und würde dann zwei Antworten innerhalb der vielen Experimente erkennen. Nämlich 50% TRUE und 50% FALSE.

Die Frage nach der Reproduzierbarkeit ist auch eine Frage nach der Größe der Menge aller Experimente.
Betrachtest du jedes Experiment als Einzel-Experiment dann ist das Ergebnis in keinem Falle vorhersagbar. Betrachtest du aber die Ergebnisse vieler solcher Experimente dann ist es sehr wohl reproduzierbar.

Wie gesagt, wüßtest du nicht, wie das Array befüllt ist (und wäre es eben zufällig mit TRUE und FALSE befüllt worden) könntest du davon ausgehen, daß jedes Element für sich zufällig bei einer Wahrscheinlichkeit von 50% ist. Aber dadurch, daß du genau weißt, wieviele Elemente nach dem aktuellen noch TRUE und FALSE sind, kann man doch nicht mehr von Zufall sprechen. Meiner Meinung nach ;)

negaH 27. Sep 2005 15:03

Re: Zufals-Boolean erzeugen
 
Hm, nochmal: ihr habt beide Recht weil ihr die Menge der Booleans im Array[] unberücksichtigt lasst.

Toxman nimmt 1000 Elemente und vermischt diese per Zufall. Leddl meint nun das durch dummen Zufall erstmal 500 FALSE und dann 500 TRUE's kommen, auch richtig. Derjenige der nun ab dem 501 Element eine Vorhersage treffen soll und WEIS das nur 1000 Elemnete mit exakt 50% TRUE/FALSE vorliegen, wird mit 100% Sicherheit 500 mal TRUE vorhersagen.

Aber, die geht bei entsprechend großer Menge auch mit reinem Zufall sehr gut, denn je größer die Menge wird desto geringer wird der Unterschied zwischen deiner Argumentation, Leddl und der von Toxman.

Toxmans Vorschlag ist also eine probate Lösung für die Eingangsfrage, die zudem noch zumindestens in der 1000'ender Menge garantieren kann das 50% Gleichverteilung herrschen muß, und denoch innerhalb dieser 1000 Elemente zufällig ist.

Aber, würde man mit Tocmans Logik 1000 mal solche 1000'ender Arrays erzeugen, sprich das komplette Arrays als 1 Experiment betrachten und 1000 mal dieses Experiment durchführen, dann wäre die effektive Vorhersagbarkeit eben nicht mehr zugunsten des Tester mit > 50% gegeben. Der Tester kann also mit der Information das es ein 1000'ender Array ist mit exakt 50% TRUE's reingarnichts anfangen und wird mit exakt 50% richtig und falsch raten.

Ergo: die rechnerische Erfolgswahrscheinlichkeit von exakt 50% zeigt uns das statisch gesehen auch bei Toxman's Methode es sich um Zufall handeln muß.

Gruß Hagen

leddl 27. Sep 2005 15:13

Re: Zufals-Boolean erzeugen
 
:lol: OK, ich geb mich geschlagen. So betrachtet passt das natürlich. Ich bin eben von der Endlichkeit dieses Arrays ausgegangen. Wenn man es ins "Undendliche" vergrößert, vergeht natürlich der Effekt den ich bemängelt habe. ;)

TeronG 27. Sep 2005 15:17

Re: Zufals-Boolean erzeugen
 
Zitat:

Zitat von negaH
Zitat:

Dann müsst "ihr" aber den Titel ändern ... denn Zufälligkeit hat nix mit Gleichmäßigkeit zu tun ...
Tja, und dies ist eben nicht ganz richtig. Zufall erzeugt schon im Mittel eine absolute Gleichverteilung.

Yup .. aber es währe Theoretischaber auch anders möglich (unwarscheinlich aber möglich).

Jelly 27. Sep 2005 15:37

Re: Zufals-Boolean erzeugen
 
Und was haben wir nun hoffentlich alle aus dieser Diskussion gelernt: Eigentlich das, was jeder schon weiss. Sobald man irgendwie Einfluss auf die Experimente nimmt, kann man nicht mehr von stochastischen Verteilungen ausgehen.

Wer schon mal bischen was mit Quantenmechanik in der Physik gesehen hat, der kennt sicherlich die schönen Gedankenexperiment, wo man einzelne Photone (oder auch Elektronen oder sonstige Elementarteilchen) auf ein eine Doppellochblende schickt, und dahinter am Schirm die Photonen registriert. Wider allen Verständnis kriegt man nicht etwa eine 50/50 Intensitätsverteilung der der Elektronen. Man kann also nicht sagen, 50% der Elektronen haben Loch A passiert und 50% Loch B, sondern man kriegt ein Interferenzmuster. Will man nun aber mal genauer analysieren, durch welches Loch denn nun ein Elektron geflogen ist, in dem man es z.B. mit Licht bestrahlt und sich so ne Art Lichtschranke vorstellt. Rein theoretisch (und wohl auch praktisch) könnte man so genau sagen, durch welches Loch (A oder B) das Elektron geflogen ist.

Lange Rede, kurzer Sinn. Ihr sucht jetzt hier den Zufall. Nun, das Experiment bestätigt meine Aussage, dass durch Eingriff von aussen die Statistik verfälscht wird. Und was man bei dem physikalischen Experiment auch wirklich rauskriegt, wenn man Detektoren in die Blenden einbringt, ist dass man nun plötzlich die 50/50 Intensitätsverteilung hinten auf dem Schirm kriegt, und das Interferenzmuster verschwunden ist... :shock:

Tja, und das ist nun mal eben Wahrscheinlichkeit. Eingriff von aussen strikt verboten.

Nikolas 27. Sep 2005 16:45

Re: Zufals-Boolean erzeugen
 
Zitat:

Und was man bei dem physikalischen Experiment auch wirklich rauskriegt, wenn man Detektoren in die Blenden einbringt, ist dass man nun plötzlich die 50/50 Intensitätsverteilung hinten auf dem Schirm kriegt, und das Interferenzmuster verschwunden ist... Shocked
Vielleicht etwas OT, aber das stimmt nicht. 50/50 klingt so nach 'Ich werfe Steine durch die Löcher' also KM mit festgelegter Trajektorie. Wenn du aber weisst, durch welchen Spalt dein Quantenobjekt gegangen ist, weisst du immer noch nicht wo es durch den Spalt gegangen ist.
Somit wirst du die Überlagerung von zwei Einzelspaltbegungsmustern auf dem Schirm sehen.

Jelly 27. Sep 2005 17:15

Re: Zufals-Boolean erzeugen
 
Zitat:

Zitat von Toxman
Somit wirst du die Überlagerung von zwei Einzelspaltbegungsmustern auf dem Schirm sehen.

Seit wann macht ein Loch ein Beugungsmuster. Da kriegst du schön eine Gaussverteilung, und nix mehr mit Haupt- und Nebenmaxima, wie das normalerweise bei 2 Löchern der Fall sein sollte. Es ist unwichtig wo dein Elektron durch das Loch gegangen ist. Wichtig ist allein die Tatsache dass du durch deine Messung=Detektieren der e- durch welches Loch sie geflogen sind, du das Experiment verfälschst. Durch deine Messung hast du in den Verlauf eingegriffen, und dein Zufall ist futsch.

Nikolas 27. Sep 2005 18:07

Re: Zufals-Boolean erzeugen
 
Zitat:

Seit wann macht ein Loch ein Beugungsmuster. Da kriegst du schön eine Gaussverteilung, und nix mehr mit Haupt- und Nebenmaxima, wie das normalerweise bei 2 Löchern der Fall sein sollte. Es ist unwichtig wo dein Elektron durch das Loch gegangen ist. Wichtig ist allein die Tatsache dass du durch deine Messung=Detektieren der e- durch welches Loch sie geflogen sind, du das Experiment verfälschst. Durch deine Messung hast du in den Verlauf eingegriffen, und dein Zufall ist futsch.
Das ist falsch.
Ich habe imPhysikerboard vor einiger Zeit die Herleitung für das Beugungsmuster am Einzelspalt gepostet: Herleitung

Da siehst du, dass auch ein Spalt ein Interferenzmuster hervorruft.
Eine Gaussverteilung würdest du nur dann bekommen, wenn du die Teilchen wie Objekte aus der klassischen Mechanik behandelst. Im Experiment sieht es aber anders aus.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:35 Uhr.
Seite 2 von 2     12   

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