WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Matematik: range till ny range? (https://www.wn.se/forum/showthread.php?t=1038297)

Robert 2009-10-01 16:12

Matematik: range till ny range?
 
Det står still i huvudet just nu.
Har följande problem: Jag har ett värde, A, som befinner sig inom ett numeriskt intervall där B1 är det lägsta värdet (kan vara negativt) och B2 är det högsta (kan också vara negativt). Nu vill jag transformera A till dess motsvarighet i ett nytt intervall (C1 är min och C2 är max).

Jag skulle kunna räkna mha den procentuella skillnade mellan A och B1 och räkna om den procentuellt mot C1, men det känns inte rätt... eller?
Hur skulle en funktion se ut med dessa 5 inparametrar (pseudokod eller gärna c#).

Bjorne 2009-10-01 16:24

Din beskrivning är någorlunda vag ... men här är mitt försök.
Kod:

def transform(a, b1, b2, c1, c2):
    delta_b = b2 - b1
    dist_b = a - b1
    scale = float(dist_b) / delta_b
    delta_c = c2 - c1
    dist_c = delta_c * scale
    return c1 + dist_c

print transform(2, 0, 10, 0, 1000)


Robert 2009-10-02 12:28

Tack, det verkar ju fungera som tänkt (även om jag inte har testat med negativa tal etc) :)


Alla tider är GMT +2. Klockan är nu 04:44.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson