Don P: Gewichtete zufällige Auswahl

Beitrag lesen

Hallo,

ja, da war ich vielleicht nicht ganz präzise bei der formulierung und dem beispiel. es geht wirklich um die inhalte. aber die anderen habens ja verstanden. :p

auf der anderen seite steht "array[1]" ja für den inhalt. index wäre in diesem fall ja nur die 1. ;)

duplikate gibts übrigens keine. das ist alles unique.

Ach so, du willst die unterschiedliche Gewichtung erst herstellen bzw. berücksichtigen, die jedes Element haben *soll*.

Das könnte so gehen:

Die W'keit, dass irgend ein ein Array-Element gewählt wird, ist 1. Insofern sind erst mal alle gleichwertig.
Also wählt man zunächst zufällig mit Gleichverteilung eins aus und fragt das gefundene Element nach seiner Gewichtung.
Entsprechend dieser Gewichtung entscheidet man mit Hilfe einer weiteren Zufallszahl, ob es auch wirklich würdig ist.

Beispiel:

Schritt 1 liefert array[25920] und dessen Gewicht ist p = 0.1

In Schritt 2 ermittelt man nun eine gleichverteilte Zufallszahl zwischen 1 und 1/p, also zwischen 1 und 10 (incl.).
Ist sie 1, so wird das Array-Element akzepiert, sonst nicht, usw. usf.

So wird mit Sicherheit im zweiten Schritt jedes Element mit der ihm gebührenden Gewichtung gezogen. Die Vor-Auswahl im 1. Schritt verfälscht nichts, da sie für alle gleich ist.

Der Ansatz ist, wie mir scheint, ziemlich ähnlich mit dem, den Andras Pflug beschreibt. Schneller bzw. einfacher wird es kaum gehen, wenn du das Array nicht irgendwie vorbehandeln willst.

Gruß, Don P