Christoph Zurnieden: Zufallszahlen: Häufigkeit anpassen für Soll-Durchschnitt

Beitrag lesen

Hi,

Bei Lessing steht:

Wär auch ein böser Mensch gleich einer lecken Bütte,
    Die keine Wohltat hält: dem ungeachtet schütte
    Sind beides, Bütt und Mensch nicht allzu morsch und alt,
    Nur deine Wohltat ein. Wie leicht verquillt ein Spalt!

Also gut ... ;-)

Was ich brauche, ist also eine Formel, die mir anhand der vorgegebenen Parameter Min,
Max und Soll-Durchschnitt errechnet, das von der Häufigkeitsverteilung her auf eine
Drei x Zweien, y Einsen, und z Nullen kommen müssen um den durchschnittlichen
Erwartungswert von 0,5 zu erreichen.

Die hast Du bekommen, kannst sie aber nicht lesen.
Aber davon lassen wir uns ja nicht abhalten ;-)

Du kannst es, wie von Dir schon einmal angedacht, mit Brute Force versuchen, also mit Gewalt. Ich erlaube mir mal, Dein Beispiel zu nutzen.

Die Mengen 3,2,1 und 0 haben eine zufällige Mächtigkeit, die zudem auch noch untereinander unabhängig ist. Auf deutsch: Du füllst 4 Speicher aus dem Zufallstopf, nach einer gewissen, frei bestimmbaren Zeit ist etwas in den 4 Speichern drin enthalten (oder auch nicht. Ist ja zufällig). Daraus ziehst Du dann den Durchschnitt (Was für einen Durchschnitt ist nicht ganz klar, dürfte aber wohl der arithmetische sein, ist aber auch vollkommen egal). Unter Beachtung der Fallen bei der Fließkommaberechnung schaust Du nach, ob das Ergebnis dieser Durchschnittsberechnung Deinem Wunsch - hier: 0,5 - nahe genug kommt. Ist das nicht der Fall hast Du vier Möglichkeiten:

  • Du ziehst mehr oder weniger willkürlich hier und da etwas ab, bis es paßt. Das ist schlecht, denn die Menge ist nach unten begrenzt.
  • Du wiederholst den Vorgang, bis es paßt. Auch nicht sonderlich günstig, das kann unter Umständen erst spät enden.
  • Du führst den Vorgang des zufälligen Füllens der Speicher solange _einzelschrittweise_ durch, bis es paßt. Das gleiche Problem, wie oben, wenn auch nicht ganz so schlimm.
  • Du füllst die Speicher passend auf: ist der Schnitt größer als 0,5 eine 0 dazu, ist er kleiner eine 1, 2 oder 3 dabei. Letzteres kann auch zufällig geschehen, dann aber auch wieder mit obigen Problemen. Geschieht das aber nicht zufällig, ist die Entropie etwas hin. Würde das also nicht kryptographisch nutzen.

Die letzte Möglichkeit dürfte Dir hier wohl zusagen nehme ich an. Ist einfach zu implementieren und trotzdem recht flott. Der Preis dafür ist ein gewisser Verlust an Entropie; mußt Du selber wissen, ob Du das verschmerzen kannst. Aber die Wichtung selber dürfte diesen Nachteil eh schon in die Nichtigkeit schieben.

So, mehr fällt mir aber wirklich nicht mehr ein, denn Du hast es erklärt bekommen, fertigen Code (Wenn auch kein PHP), Hinweise zum Selberlernen, die richtige Formel und eine vereinfachte für die Implementation und jetzt auch noch einen weighted Bogorand.
Was noch? Soll ich es machen? Kein Problem: 3 EUR/Zeile (dürften ca 20-30 Zeilen werden, je nach PHP-Version). Vorkasse.

so short

Christoph Zurnieden