Hey Leute, habe eine Klasse für Pi berechnung erstellt und würde gerne eure Meinung dazu hören. Die Berechnung basiert auf probabilistischem Verfahren. Würde auch gerne wissen, ob man meine Dokumentation versteht. Vielen Dank!
Java:
import java.lang.Math;
/**
* Diese Klasse erzeugt einen Simulator, der mit probabilistischem Verfahren die Zahl
* Pi berechnet.
*/
public class PiSimulator
{
/** Anzahl der Punkte, die im Kreis liegen. */
private int punkteImKreis;
/** Anzahl der Punkte, die im Kreis und ausserhalb liegen. */
private int punkteGesamtanzahl;
/** Differenz von Pi und Naeherungswert. */
private double tatsaechlicheAbweichung;
/** Initialisiert alle Klassenvariablen. */
public PiSimulator()
{
punkteImKreis = 0;
punkteGesamtanzahl = 0;
tatsaechlicheAbweichung = 1;
}
/**
* Berechnet den Naeherungswert dessen Abweichung von der Zahl Pi gleich oder kleiner
* der erlaubten Abweichung ist.
* @param Die erlaubte Abweichung.
*/
public void simulierePi(double erlaubteAbweichung)
{
while (tatsaechlicheAbweichung > erlaubteAbweichung || tatsaechlicheAbweichung < 0)
{
double xKoordinate = Math.random();
double yKoordinate = Math.random();
if (xKoordinate * xKoordinate + yKoordinate * yKoordinate <= 1)
{
punkteImKreis++;
}
punkteGesamtanzahl++;
tatsaechlicheAbweichung = (4*(double)punkteImKreis/punkteGesamtanzahl) - Math.PI;
}
}
/**
* Liefert den Naeherungswert der Simulation.
* @return Der Naeherungswert der Simulation.
*/
public double liefereNaeherungswert()
{
return Math.PI + tatsaechlicheAbweichung;
}
/**
* Liefert die Anzahl der Punkte, die nicht im Kreis liegen.
* @return Die Anzahl der Punkte, die nicht im Kreis liegen.
*/
public int lieferePunkteGesamtanzahl()
{
return punkteGesamtanzahl;
}
/**
* Liefert die Anzahl der Punkte, die im Kreis liegen.
* @return Die Anzahl der Punkte, die im Kreis liegen.
*/
public int lieferePunkteImKreis()
{
return punkteImKreis;
}
/**
* Liefert die Anzahl der Punkte, die nicht im Kreis liegen.
* @return Die Anzahl der Punkte, die nicht im Kreis liegen.
*/
public int lieferePunkteNichtImKreis()
{
return punkteGesamtanzahl - punkteImKreis;
}
/**
* Liefert die Differenz von Pi und Naeherungswert.
* @return Die Differenz von Pi und Naeherungswert.
*/
public double liefereTatsaechlicheAbweichung()
{
return tatsaechlicheAbweichung;
}
}