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. dhC++ - Funktion zum Auswählen aus einer Liste, in der jedes Element eine bestimmte Wahrscheinlichkeit hat
struct s{
float probability;
...
}
s sArray[50];
Was ist der schnellste Weg 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
if((float) (rand()/RAND_MAX) < probability)...
s-> Wahrscheinlichkeit sollte aktuell sein -> Wahrscheinlichkeit, richtig? – Stuart
'rand()/static_cast (RAND_MAX)' wird immer entweder 0 (mit sehr hoher Wahrscheinlichkeit) oder 1 (mit sehr geringer Wahrscheinlichkeit) sein. Sie könnten stattdessen 'rand()/static_cast (RAND_MAX)' versuchen. –
Ich verwendete: '(float) ((float) rand()/RAND_MAX)' Es funktioniert für mich. – Stuart