Hi,
ich wollte gerne mal fragen, welches der beste Weg ist um gewichtete Zufallszahlen zu realisieren bzw. diese zu ermitteln...
Ich habe bis jetzt einige Methoden probiert, die aber nur bei einer kleinen Menge von Elementen wirklich geeignet sind. z.B.
Zufallszahlen von 1 - 5 mit Gewichtung in Klammern: 1(8), 2 (2), 3 (1), 4 (9), 5 (10)
Jetzt könnte ich z.B. in einer Schleife eine Zufallszahl zwischen 1 und 5 ermitteln, z.B. 1 und dann ihre Wahrscheinlichkeit, also ihre Gewichtung durch die Summe aller Gewichtungen ermitteln (für 1: 8/30) und dann bei erneuter Zufallszahl jetzt zwischen 1 und 30 überprüfen, ob diese Zahl <= 8 ist, wenn ja ist die 1 die ermittelte Zufallszahl, wenn nein, fortführen mit Schleife und erneutes Generieren einer Zufallszahl von 1 - 5 usw.
Ok... das wäre jetzt meine Herangehensweise als "Laie". Das würde vielleicht bei kleinen Spannen noch gehen, aber bei z.B. 2-3000 Elementen nicht mehr... [jedenfalls wenn man es zeitlich optimiert haben möchte]
Darüber hinaus könnte man auch gleich eine Zufallszahl von 1-30 (Summer aller Wertigkeiten) ermitteln und bei z.B. einem Ergebnis von 11 berechnen, dass damit die 3 gewählt wurde...
Das würde auch bei großen Spannen funktionieren... aber da fehlt mir irgendwie die technische Realisierung unter zeitlichem Aspekt:
Klar: Ne Schleife von 1-5 und dann jeweils die einzelnen Gewichtungen addieren und sobald die Summe größer ist als die Zufallszahl habe ich das Ergebnis mit dem aktuellen Schleifenwert...
Aber bei mehreren tausend Elementen ist das auch zeitlich wieder sehr unbefriedigend. Gibt es da vielleicht sogar ne Formel für um sich die Schleife zu sparen?
Und wie würde sich das ändern, wenn man z.B. es so festlegen möchte, dass die kleinste Gewichtung in Wirklichkeit die größte Gewichtung hat?
Das wäre ja bei z.B einer Tabelle der Fall wie "die häufigsten Haustiere":
Platz 1: Hund, Platz 2: Katze etc. also Gewichtung Hund(1), Katze(2), etc.
Die Wahrscheinlichkeiten wäre ja dann für z.B. den Hund: (Summe aller Gewichtungen-eigene Gewichtung(hier "1"))/Summe aller Gewichtungen...
Mhmm...
Wie wäre denn wirklich die beste Herangehensweise an solche "Geschichten"?
Jemand ne Idee?
Vielen Dank im Voraus!
P.S. Sorry, wenn sich das ein wenig wirr lesen sollte. Falls ihr Verständnisprobleme habt, fragt gerne nach
ich wollte gerne mal fragen, welches der beste Weg ist um gewichtete Zufallszahlen zu realisieren bzw. diese zu ermitteln...
Ich habe bis jetzt einige Methoden probiert, die aber nur bei einer kleinen Menge von Elementen wirklich geeignet sind. z.B.
Zufallszahlen von 1 - 5 mit Gewichtung in Klammern: 1(8), 2 (2), 3 (1), 4 (9), 5 (10)
Jetzt könnte ich z.B. in einer Schleife eine Zufallszahl zwischen 1 und 5 ermitteln, z.B. 1 und dann ihre Wahrscheinlichkeit, also ihre Gewichtung durch die Summe aller Gewichtungen ermitteln (für 1: 8/30) und dann bei erneuter Zufallszahl jetzt zwischen 1 und 30 überprüfen, ob diese Zahl <= 8 ist, wenn ja ist die 1 die ermittelte Zufallszahl, wenn nein, fortführen mit Schleife und erneutes Generieren einer Zufallszahl von 1 - 5 usw.
Ok... das wäre jetzt meine Herangehensweise als "Laie". Das würde vielleicht bei kleinen Spannen noch gehen, aber bei z.B. 2-3000 Elementen nicht mehr... [jedenfalls wenn man es zeitlich optimiert haben möchte]
Darüber hinaus könnte man auch gleich eine Zufallszahl von 1-30 (Summer aller Wertigkeiten) ermitteln und bei z.B. einem Ergebnis von 11 berechnen, dass damit die 3 gewählt wurde...
Das würde auch bei großen Spannen funktionieren... aber da fehlt mir irgendwie die technische Realisierung unter zeitlichem Aspekt:
Klar: Ne Schleife von 1-5 und dann jeweils die einzelnen Gewichtungen addieren und sobald die Summe größer ist als die Zufallszahl habe ich das Ergebnis mit dem aktuellen Schleifenwert...
Aber bei mehreren tausend Elementen ist das auch zeitlich wieder sehr unbefriedigend. Gibt es da vielleicht sogar ne Formel für um sich die Schleife zu sparen?
Und wie würde sich das ändern, wenn man z.B. es so festlegen möchte, dass die kleinste Gewichtung in Wirklichkeit die größte Gewichtung hat?
Das wäre ja bei z.B einer Tabelle der Fall wie "die häufigsten Haustiere":
Platz 1: Hund, Platz 2: Katze etc. also Gewichtung Hund(1), Katze(2), etc.
Die Wahrscheinlichkeiten wäre ja dann für z.B. den Hund: (Summe aller Gewichtungen-eigene Gewichtung(hier "1"))/Summe aller Gewichtungen...
Mhmm...
Wie wäre denn wirklich die beste Herangehensweise an solche "Geschichten"?
Jemand ne Idee?

Vielen Dank im Voraus!
P.S. Sorry, wenn sich das ein wenig wirr lesen sollte. Falls ihr Verständnisprobleme habt, fragt gerne nach

Zuletzt bearbeitet: