Hallo,
Wenn jetzt allerdings ein Punkt genau auf der Kreislinie liegt
dieser Fall tritt so gut wie nie ein. Wie oft genau er eintritt, hängt von der Mantissenlänge des Fließkomma-Zahlentyps („float“) ab, mit dem Du die Simulation durchführst. Üblich sind heute sogenannte doppeltgenaue Floats („double“), die acht Bytes belegen. 52 Bits sind für die Mantisse reserviert, das entspricht etwa 15 bis 16 signifikanten Dezimalstellen. Der Term x · x + y · y hat also bei irgendeinem Durchlauf z. B. den zufälligen Wert 1.39201008331471, und beim nächsten den zufälligen Wert 0,76608964105692. Weil dabei aber alle Ziffern statistisch unabhängig voneinander sind, wird der Wert 1.00000000000000 durchschnittlich nur jedes 100000000000000-te mal erscheinen. Ob Du diese Fälle mitzählst oder nicht (also in Deinen Code ein "
Randomize;
n := 0;
FOR k := 1 TO 1000000000 DO
begin
x := Random;
y := Random;
IF x*x+y*y=1.0 THEN Inc(n);
end;
Am Schluss kannst Du Dir n ausgeben lassen und daran sehen, wie oft die exakte Gleichheit aufgetreten ist. Bei „nur“ 1000000000 = eine Milliarde = 109-maligem Würfeln wird das höchstwahrscheinlich kein einziges mal passieren, und so war es auch tatsächlich, als ich das obige Programm gerade laufen ließ. Erst bei 1014 oder 1015 Durchläufen wäre ein Treffer zu erwarten – aber das zu testen würde Wochen dauern (für die 109 brauchte mein i5-PC eine halbe Minute).
Gruß
Martin