Forum: Object-Pascal / Delphi-Language
Delphi
by negaH,
27. Sep 2005
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...
Forum: Object-Pascal / Delphi-Language
Delphi
by negaH,
27. Sep 2005
@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...
Forum: Object-Pascal / Delphi-Language
Delphi
by negaH,
27. Sep 2005
@leddl:
Du widersprichst dich ja im selben Satz ;)
Ein Experiment beliebig oft exakt reproduzieren kann man nur OHNE Zufall.
Angenommenes Experiment
Forum: Object-Pascal / Delphi-Language
Delphi
by negaH,
27. Sep 2005
@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
Forum: Object-Pascal / Delphi-Language
Delphi
by negaH,
27. Sep 2005
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...
Forum: Object-Pascal / Delphi-Language
Delphi
by negaH,
27. Sep 2005
Ein weiteres Beispiel
function BooleanToString3(Value: Boolean): String;
begin
if Value = True then Result := 'True'
else Result := 'False';
end;
begin
Forum: Object-Pascal / Delphi-Language
Delphi
by negaH,
27. Sep 2005
Und weil dieser Hinweis essentiell richtig ist, und das nun schon von 3-4 Leuten mit anderen Worten gesagt wurde, habe ich's eben ein 5'tes mal wiederholt. Vielleicht wird es ja dann noch deutlicher ;)
Aber, selbst wenn der Poster der Frage kein Intresse mehr an der Lösung dieser Frage hat, so ist die Wahrscheinlichkeit denoch sehr groß das später andere Antwortsuchende über diese Thread...
Forum: Object-Pascal / Delphi-Language
Delphi
by negaH,
27. Sep 2005
@alzaimar:
ich weis das dies funktioniert. Aber nur weil der Compiler einen Boolean als
FALSE = 0
TRUE <> 0
ansieht, was aber nicht offiziell dokumentiert ist. Der Compiler kann diese Logik benutzen weil auf Intel CPUs die Anfrage auf == 0 oder <> 0 über die Prozessorflags und deren Auswertung per Bedingte Sprünge so easy ist. Würde der Borland Compiler aber zb. auf ARM Kernen laufen so...
Forum: Object-Pascal / Delphi-Language
Delphi
by negaH,
27. Sep 2005
Nein ist es nicht. Beide Lösungen sind schlichtweg falsch da der direkte Cast eines Integers nach Boolean syntaktisch absolut undefiniert ist.
PASCAL konforme Lösungen wären:
begin
Result := Odd(Random(2));
Result := Random(2) <> 0;
Forum: Object-Pascal / Delphi-Language
Delphi
by negaH,
27. Sep 2005
Es besteht aber die Möglichkeit eine solche "Zufallssequenz" ganz einfach zu erzeugen.
var
LastValue: Boolean;
LastValid: Boolean := False;
function RandomBoolean: Boolean;
begin
if not LastValid then
Forum: Object-Pascal / Delphi-Language
Delphi
by negaH,
27. Sep 2005
Ja und ? Das macht exakt mein Vorschlag, denn der PRNG muß als guter RNG garantieren das er auf lange Sicht gerade und ungerade Zahlen gleichmäßig verteilt.
Davon abgesehen, eine Garantie das man bei 1000 zufällig erzeugten Booleans exakt 50% jeweils TRUE oder FALSE sind kann es bei Zufall eben nicht geben. Dies wäre nämlich nicht mehr zufällig, also ein Widerspruch insich. Entweder will man...
Forum: Object-Pascal / Delphi-Language
Delphi
by negaH,
26. Sep 2005
Was ist mit
Result := Odd(Random(100));
Gruß Hagen