C ++ - Funktion zum Auswählen aus einer Liste, in der jedes Element eine bestimmte Wahrscheinlichkeit hat

8

Ich habe ein Array von Strukturen und eines der Felder in der Struktur ist ein Float. Ich möchte eine der Strukturen auswählen, bei denen die Wahrscheinlichkeit, sie auszuwählen, relativ zum Wert des Floats ist. dh

%Vor%

Was ist der schnellste Weg, um zu entscheiden, welche zu wählen? Gibt es dafür eine Funktion? Wenn ich die Summe aller Wahrscheinlichkeitsfelder wüsste (beachte, dass es nicht 1 ist), könnte ich dann jedes s durchlaufen und probability/total_probability mit einer Zufallszahl vergleichen und die Zufallszahl für jedes s ändern? dh

%Vor%     
Stuart 15.04.2010, 23:41
quelle

2 Antworten

9
%Vor%     
rlbond 15.04.2010, 23:52
quelle
3

Finde RAND_MAX wie du sagst. Generieren Sie eine Zufallszahl bis RAND_MAX. Durchlaufen Sie das Array, indem Sie die Wahrscheinlichkeiten hochzählen, bis Ihre generierte Zufallszahl erreicht oder überschritten ist. (Bei einer Leistung von nur 50 Elementen sollte kein Problem auftreten, andernfalls die Summen der Wahrscheinlichkeiten einmal in einem anderen Array speichern und dann eine Halbierung nach dem zufälligen Wert suchen.)

    
Trevor Tippins 15.04.2010 23:49
quelle

Tags und Links