Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Painotus

Short Php [07.10.2009 18:24:58]

#

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?

Metabolix [07.10.2009 19:01:12]

#

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

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta