000
06.06.2011, 23:45 Uhr
Lensflare
|
Hallo.
Ich rätsele gerade an der Implementierung einer Funktion.
Diese Funktion soll die Wahrscheinlichkeit berechnen für einen Treffer bei einem Wurf wenn die Treffsicherheit der werfenden Person bekannt ist und die Ausweichwahrscheinlichkeit der anderen Person bekannt ist, auf die geworfen wird.
float p(float treff, float ausweich);
"treff" = Treffsicherheit der werfenden Person. von 0.0 bis 1.0 "ausweich" = Ausweichsicherheit der Person auf die geforfen wird. von 0.0 bis 1.0
Die Bedingungen sind folgende (geordnet nach Priorität, absteigend):
p(0, a) = 0.0 //bei 0% Treffsicherheit kann man nicht treffen p(1, a) = 1.0 //bei 100% Treffsicherheit kann man nicht verfehlen
p(a, 0) = 1.0 //bei 0% Ausweichsicherheit wird man immer getroffen p(a, 1) = 0.0 //bei 100% Ausweichsicherheit wird man nie getroffen
p(a, a) = 0.5 //wenn beide Personen gleich gut, dann Chance auf Treffer = 50%
Alle anderen werte sollten dazwischen liegen. also zB: p(x<a, a) < 0.5 //Wenn Werfer schlechter als Ausweicher, dann Chance auf Treffer < 50% p(a, y<a) > 0.5 //Wenn Ausweicher schlechter als Werfer, dann Chance auf Treffer > 50%
Ich hoffe, dass es nicht zu verwirrend ist.
Bisher hab ich es nur geschafft die letzte Bedingung zu erfüllen und die Werte dabei ungefähr in die richtige Richtung laufen zu lassen:
float p(float treff, float ausweich) { return 0.5f+(x-y)*0.5f; }
Der Plot sieht so aus: www.wolframalpha.com/input/?i=plot%28z%3D0.5%2B%28x-y%29*0.5%29++%28x+from+0+to+1.0%2C+y+from+0+to+1.0%29
Das erfüllt leider noch nicht die Bedingenen für Annäherung an die 0 und 1 Grenzen.
Ich hoffe ihr könnt mir helfen. -- Wenn das Gehirn so einfach wäre, dass wir es verstehen könnten, wären wir so einfach, dass wir es nicht verstehen könnten. (Emerson Pugh Trost) |