AuK/Probabilistische Algorithmen SS11
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
<language>Java</language>
==Numerische probabilistische Algorithmen==
Algorithmen dieser Art produzieren eine Näherungslösung mit wählbarer Genauigkeit.
Ein Beispiel für diese Klasse ist die Bestimmung einer Näherung für die Zahl <math>\pi</math> durch "Zufallsregen".
Dabei werden <math>n</math> Regentropfen auf eine quadratische Fläche fallen gelassen, in der sich ein Kreis befindet. Anschließend werden die Regentropfen gezählt, die innerhalb des Kreises gefallen sind.
Es wird angenommen, dass jeder Punkt im Quadrat exakt dieselbe Wahrscheinlichkeit hat, von einem Tropfen getroffen zu werden.
Ist der Radius des Kreises <math>r</math>, so ist seine Fläche <math>\pi r^2</math>, wobei die Fläche des Quadrats <math>4r^2</math> ist.
<code id="4dc540a538cae">public static float rain(int n){
Random randomGenerator = new Random();
float a = 0;
int k = 0;
for(int i = 0; i < n; i++){
int x = randomGenerator.nextInt(2);
int y = randomGenerator.nextInt(2);
if(x*x + y*y <= 1){
k = k+ 1;
}
}
return a = 4*k/n;
}</code>
<run id="4dc540a538d1c">rain(100);</run>