Prozentuale Zufallsverteilung

ocsme

Top Contributor
Guten Tag zusammen,

es könnte nun sehr gut sein dass das was ich hier beschreibe in der Mathematik Definiert ist und das ganze aufgrund dessen leicht Programmiert werden kann.

Was ich vorhabe ist eine Methode schreiben die eine Auswahl aus z. B. 4 Eigenschaften trifft, diese dann Prozentual unterschiedlich verteilt werden. Also nehmen wir an ich öffne eine Truhe, in dieser Truhe ist 1x Roter Ball 35 %, 1x Weißer Ball 35 %, 1x Rot-Weißer Ball 15% und 1x Lila Ball 15%.

Es muss aber ja auch Garantiert werden das wenn ich 100x das Ereignis ausführe man die Anzahl der Bälle erhält.
Leider habe ich in Stochastik keinen Durchblick :(

Meine Idee bei einer solchen Aufgabe wäre nun das Random Object zu nutzen. Man erzeugt eine Zufallszahl von 1-100 und sagt liegt die Zahl zwischen 1-35 = Roter Ball, liegt die Zahl zwischen 36-70 = Weißer Ball etc. Das dürfte so aber nicht funktionieren da das Random Object ja auch nach einer gewissen Wahrscheinlichkeit Zahlen trifft!
Kann mir dabei jemand helfen?

Keine ganze Lösung oder Programme verlange ich hier!!! Nur eine Erklärung oder ein Link :) den Rest würde ich gerne selbst versuchen :)
 

Kirby.exe

Top Contributor
Guten Tag zusammen,

es könnte nun sehr gut sein dass das was ich hier beschreibe in der Mathematik Definiert ist und das ganze aufgrund dessen leicht Programmiert werden kann.

Was ich vorhabe ist eine Methode schreiben die eine Auswahl aus z. B. 4 Eigenschaften trifft, diese dann Prozentual unterschiedlich verteilt werden. Also nehmen wir an ich öffne eine Truhe, in dieser Truhe ist 1x Roter Ball 35 %, 1x Weißer Ball 35 %, 1x Rot-Weißer Ball 15% und 1x Lila Ball 15%.

Es muss aber ja auch Garantiert werden das wenn ich 100x das Ereignis ausführe man die Anzahl der Bälle erhält.
Leider habe ich in Stochastik keinen Durchblick :(

Meine Idee bei einer solchen Aufgabe wäre nun das Random Object zu nutzen. Man erzeugt eine Zufallszahl von 1-100 und sagt liegt die Zahl zwischen 1-35 = Roter Ball, liegt die Zahl zwischen 36-70 = Weißer Ball etc. Das dürfte so aber nicht funktionieren da das Random Object ja auch nach einer gewissen Wahrscheinlichkeit Zahlen trifft!
Kann mir dabei jemand helfen?

Keine ganze Lösung oder Programme verlange ich hier!!! Nur eine Erklärung oder ein Link :) den Rest würde ich gerne selbst versuchen :)
Also es hängt stark davon ab, was deine Methode tut, möchtest du einen Ball herausnehmen und danach sofort wieder hineinlegen oder bleiben die Bälle außerhalb der Truhe?
 

ocsme

Top Contributor
Also es hängt stark davon ab, was deine Methode tut, möchtest du einen Ball herausnehmen und danach sofort wieder hineinlegen oder bleiben die Bälle außerhalb der Truhe?
Oh stimmt da war ja was. Stochastik ist nicht meine Welt :(

Frag ich mal anders herum was würde einfach zu implementieren gehen?
Und was ist wenn ich die Truhe nur 1x öffne? <- Wie könnte ich überprüfen das die Prozentuale Verteilung stimmt?

Danke für die schnelle Antwort :)
 

Kirby.exe

Top Contributor
Oh stimmt da war ja was. Stochastik ist nicht meine Welt :(

Frag ich mal anders herum was würde einfach zu implementieren gehen?
Und was ist wenn ich die Truhe nur 1x öffne? <- Wie könnte ich überprüfen das die Prozentuale Verteilung stimmt?

Danke für die schnelle Antwort :)
Naja es wäre einfacher wenn die Kugeln draußen bleiben. Was hast du denn alles gegeben? Weißt du wie viele Kugeln generell in der Truhe sind? Hast du die Wahrscheinlichkeiten für die Kugeln?
 

ocsme

Top Contributor
Das ist eine Aufgabe die ich mir selbst ausgedacht habe. So etwas sieht man doch manchmal in Spielen und ich hab mich gefragte wie so etwas geht!

Also nehmen wir an ich hätte 100 Kugeln mit der Verteilung von oben:
1x Roter Ball 35 %
1x Weißer Ball 35 %
1x Rot-Weißer Ball 15%
1x Lila Ball 15%

Hilft das weiter?
 

Kirby.exe

Top Contributor
Also ich erkläre mal erstmal auf mathematischer ebene:

Deine Verteilung macht schonmal keinen Sinn wenn du 100 Bälle hast xD Nehmen wir mal an wir haben 100 Bälle in der Truhe nach der selben Verteilung:

Code:
Roter Ball 35 % -> 35/100 -> 7/20

Weißer Ball 35 % -> 35/100 -> 7/20

Rot-Weißer Ball 15% -> 15/100 -> 3/20

Lila Ball 15% -> 3/20

Bei 100 Bällen

Wenn du also Bälle heraus nimmst verringert sich die gesamte Menge und die Wahrscheinlichkeiten verändern sich, somit währe es doch einfacher wenn die Bälle in der Truhe bleiben. Du könntest anhand der Wahrscheinlichkeit ausrechnen wie viele Bälle existieren ;)
 

Kirby.exe

Top Contributor
Wie du die Truhe modellierst müsstest du dir überlegen aber so auf die schnelle hätte ich es so gemacht:
Java:
public class Truhe{
  
    private ArrayList<Kugel> true;
  
    public Truhe(Kugel rot, Kugel gruen, Kugel blau, Kugel lila){
        true = new ArrayList<Kugel>();
        true.add(rot);
        true.add(gruen);
        true.add(blau);
        true.add(lila);
    }



    public void getStatistik(){
        ....
    }
}

Wenn du jedoch die Wahrscheinlichkeiten kennst sind die Anzahl der Kugeln trivial, wenn die Wahrscheinlichkeit für eine rote Kugel (35/100) ist dann sind es 35 Kugeln bei insgesamt 100 Kugeln.
 

ocsme

Top Contributor
Die Idee ist gut finde ich doch verstehen tu ich es weiterhin noch nicht!
Muss jetzt Buchgeführt werden wie oft ein Ball genommen wurde?
Ich hänge immer noch an der Zufallszahl, man generiert sich eine Zahl zwischen 0-3 und switcht über die Bälle. Dann speichert man sich wie oft ein Ball genommen wurde. Doch das ist doch nicht ordentlich verteilt! Wenn es doof läuft dann werden in den ersten 15 Zügen die 15 lila Bälle genommen!

Oder wird bei solchen Aufgaben so viel Aufwand investiert. Das es nebenher Protokolliert wird und das auch die Verteilung Protokolliert wird das eben oben geschriebenes nicht passiert?
 

temi

Top Contributor
Ich bin ja kein Mathematiker, aber wie @Kirby_Sike schon geschrieben hat: Wenn du die Kiste mit einer vorgegebenen Verteilung füllst, dann ist die nicht zufällig, sondern steht fest.

Geht es dir um die zufällige Entnahme einer Kugel aus der Kiste?

Dann nimm eine Liste fülle sie mit den "Kugeln", je nach Verteilung, z.B. Index 1 - 25 sind rot, 26 - 50 sind blau, usw.

Dann mischt du die Liste und entnimmst die Kugeln der Reihe nach.
 

Kirby.exe

Top Contributor
Ich bin ja kein Mathematiker, aber wie @Kirby_Sike schon geschrieben hat: Wenn du die Kiste mit einer vorgegebenen Verteilung füllst, dann ist die nicht zufällig, sondern steht fest.

Geht es dir um die zufällige Entnahme einer Kugel aus der Kiste?

Dann nimm eine Liste fülle sie mit den "Kugeln", je nach Verteilung, z.B. Index 1 - 25 sind rot, 26 - 50 sind blau, usw.

Dann mischt du die Liste und entnimmst die Kugeln der Reihe nach.
Genau, also wenn du wirklich einfach nur die Wahrscheinlichkeiten von Kugel berechnen möchtest, dann fülle dir, so wie @temi geschrieben hat, eine Liste mit Kugeln und entnehme immer eine und führe eine Liste wie oft eine vorkommt. Dann könntest du am Ende die Wahrscheinlichkeiten anhand der Zählung und der gesamten Menge von Kugeln ausrechen ;)
 

temi

Top Contributor
Hier mal ein Beispiel für ein Kartendeck. Farbe und Wert sind Enumerationen:
Java:
public class Blatt {

    private final Deque<Karte> karten;

    public Blatt() {
        karten = new ArrayDeque<>();
        karten.addAll(erzeugeGemischteKarten());
    }

    private List<Karte> erzeugeGemischteKarten() {

        List<Karte> ergebnis = new ArrayList<>();

        for (Farbe farbe : Farbe.values()){
            for (Wert wert : Wert.values()) {
                ergebnis.add(new Karte(farbe, wert));
            }
        }

        Collections.shuffle(ergebnis, new Random(System.currentTimeMillis()));

        return ergebnis;
    }

    public Karte naechsteKarte() {
        return karten.poll();
    }

    public List<Karte> gebeKarten(final int anzahl) {

        int i = 0;

        List<Karte> ergebnis = new ArrayList<>();

        while (!karten.isEmpty() && i++ < anzahl) {
            ergebnis.add(naechsteKarte());
        }

        return ergebnis;
    }
}
 

ocsme

Top Contributor
Damit ist das ganze schon sehr Nett beantwortet :)
Dachte mal wieder viel zu Kompliziert und um 1000 Ecken :rolleyes:

Herzlichen Dank an euch zwei :)
 

Neue Themen


Oben