Hallo, liebes Java Forum ich habe folgendes Problem.
Ich möchte eine kleine Simulation schreiben die mir hilft eine eine Wahrscheinlichkeit anzunähern.
Die Aufgabe war es 3 Punkte rnd auf einem Kreisrand zu platzieren und zu schauen wie wahrscheinlich es ist das die 3 Punkte in einem Halbkreis liegen. Mein erster versuch funktioniert suche Verbesserungsvorschläge und eine Möglichkeit es so zu entwickeln das es auch für N Punkte funktioniert so das man auch 4,5 oder 6 testen kann.
Danke im voraus gruß
Mein Programm
Ich möchte eine kleine Simulation schreiben die mir hilft eine eine Wahrscheinlichkeit anzunähern.
Die Aufgabe war es 3 Punkte rnd auf einem Kreisrand zu platzieren und zu schauen wie wahrscheinlich es ist das die 3 Punkte in einem Halbkreis liegen. Mein erster versuch funktioniert suche Verbesserungsvorschläge und eine Möglichkeit es so zu entwickeln das es auch für N Punkte funktioniert so das man auch 4,5 oder 6 testen kann.
Danke im voraus gruß
Mein Programm
Java:
import java.util.Random;
public class Main {
public static void main(String[] args) throws InterruptedException{
// Anzahl der Winkel in Grad (Kreis = 360°)
final int kreis = 360;
// Anzahl der Punkte die Zufällig auf dem Kreis kommen
final int punkte = 3;
// Anzahl der Test durchläufe und Varbibeln zum Testen
final int durchlaeufe = 100000;
int imhalb, nichtimhalb, x;
imhalb = 0;
nichtimhalb = 0;
// Random anlegen und Array pkt für Punkte auf dem Kreis erstellen
Random random = new Random();
int[] pkt = new int[punkte];
// Schleife zum testen mit durchlaeufen
for(int ii = 0;ii < durchlaeufe; ii++){
// Array mit Zufallszahlen fuellen
for (int i = 0; i < pkt.length; i++){
pkt[i] = random.nextInt(360)+1;
}
// Array aufsteigen sortieren
java.util.Arrays.sort(pkt);
// Alle auf den niedrigsten wert setzen
int nuller = pkt[0]-1;
for (int i = 0; i < pkt.length; i++)
pkt[i] = pkt[i] - nuller;
System.out.println("Werte des " + ii + " durchlauf "+ pkt[0] + " " + pkt[1] + " " + pkt[2] );
if ((pkt[2] > 180) && (pkt[1] > 180)){
pkt[0] = pkt[0] + pkt[2];
java.util.Arrays.sort(pkt);
if(pkt[2] - pkt[0] <= 180 )
imhalb++;
else
nichtimhalb++;
}
else if(pkt[2] > 180){
pkt[2] = (360 - pkt[2]) * (-1);
java.util.Arrays.sort(pkt);
if(pkt[2] - pkt[0] <= 180 )
imhalb++;
else
nichtimhalb++;
}
else{
if(pkt[2] - pkt[0] <= 180 )
imhalb++;
else
nichtimhalb++;
}
}
double Rp, teiler;
teiler = durchlaeufe / 100;
Rp = (imhalb/teiler);
System.out.println("Die Punktle liegen zu "+ Rp + "% im Halbkreis auf dem Kreis.");
}
}