Eli olen php:llä tekemässä systeemiä jossa on 40 rankkia arrayssa ja ne pitäisi saada jaettua tasaisin välein 2000 "pisteeseen" (eli normaalisti rank 1 olisi 50, rank 2 100, rank 3 150 jne.) kuitenkin nyt haluaisin painotuksen jolloin ensimmäinen rankki olisikin esim. 10 ja toiseksi viimeisen ja viimeisen rankin välissä olisi sitten paljon enemmän (esim. 200) väli. Mites tämän saisi toimimaan?
Laskemalla. Valitse esimerkiksi jokin polynomi- tai eksponenttifunktio ja ratkaise se haluamillasi arvoilla. Tässä on toisen asteen yhtälö ratkaistuna niin, että rank(0) = 0, rank(40) = 2000 ja rank(1) = C.
rank(1) = C rank(x) = a * x * x + b * x 1) a + b = C <=> b = C - a 2) a * 40 * 40 + b * 40 = 2000 <=> a * 40 + b = 50 <=> a * 40 + C - a = 50 <=> a = (50 - C) / 39 b = C - a = (40 * C - 50) / 39 rank(x) = (50 - C) / 39 * x * x + (40 * C - 50) / 39 * x
Kun sijoitetaan mainitsemasi C = 10, saadaan tällaisia arvoja:
0: 0.000 1: 10.000 2: 22.051 3: 36.154 ... 20: 589.744 21: 640.769 ... 30: 1192.308 31: 1263.846 ... 38: 1822.051 39: 1910.000 40: 2000.000
Aihe on jo aika vanha, joten et voi enää vastata siihen.