[PHP] Formulie iets niet goed?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • chuxiej
  • Registratie: Februari 2001
  • Laatst online: 13-07-2020
Ik ben bezig met een scriptje dat de punten die je wint of verliest voor een ladder laat zien.

Dit is de uitleg van de formule van de ladder site:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
RN = RO + K(W - WE) 

Where :


RN is the new rating 
RO is the old (pre-event) rating 
K is a constant 
W is the score in the event (1 = win, 0 = loss)

K is the maximum number of points you can win or lose based upon the ranks of the players involved. 
It can range from 1 point to 64 points. 

WE is the expected score derived from the following formula : 


WE = 1 / (10 ^ (DR / 400) + 1) 

DR is the difference in ratings between players.


Dit is de php code waarmee ik het probeer uit te rekenen:

PHP:
1
2
3
4
5
6
7
8
9
10
<?
$p1_points = 600;
$p2_points = 600;

$PD = $p2_points - $p1_points;
$WE = 1 / (10 ^ ($PD / 400)) +1;
$RN = 64 + (0 - $WE);

echo("Points Difference: " . $PD . "<br>WE Sum: " . $WE . "<br>RN Sum: " . $RN);
?> 


De output hiervan is:
code:
1
2
3
Points Difference: 0
WE Sum: 1.1
RN Sum: 62.9


Terwijl de uitkomst van RN Sum eigenlijk 32 zou moetten zijn.
Ik zit hier nu al een uurtje mee te knutselen maar t wil maar niet goed komen.

Mischien dat iemand hier weet wat ik fout doe..

[ Voor 17% gewijzigd door chuxiej op 21-03-2003 22:39 ]

www.dannyhiemstra.nl


Acties:
  • 0 Henk 'm!

Verwijderd

$PD / 400
dit komt zo als ik het nu zie uit op 0/400, dus altijd 0.. Houd je daar ook rekening mee?
dus 10^0 = 1
1/1+1 =
1+1 = 2

64 + (0-2) =
64 + -2 =
64-2 =
62

zit ik nu zo krom te kijken?

Acties:
  • 0 Henk 'm!

  • chuxiej
  • Registratie: Februari 2001
  • Laatst online: 13-07-2020
Nee dat niet maar als je dus in de ladder iemand met hetzelfde punten aantal speeld win je 32 punten.

Maar ok nu bv dit scriptje:
PHP:
1
2
3
4
5
6
7
8
9
10
<?
$p1_points = 400;
$p2_points = 600;

$PD = $p2_points - $p1_points;
$WE = 1 / (10 ^ ($PD / 400)) +1;
$RN = 64 + (0 - $WE);

echo("Points Difference: " . $PD . "<br>WE Sum: " . $WE . "<br>RN Sum: " . $RN);
?> 


Uitkomst:
code:
1
2
3
Points Difference: 200
WE Sum: 1.1
RN Sum: 62.9


Volgens mij is er iets mis met de WE som..
Er komt steeds maar 1.1 uit :?

[ Voor 15% gewijzigd door chuxiej op 21-03-2003 22:45 ]

www.dannyhiemstra.nl


Acties:
  • 0 Henk 'm!

Verwijderd

FireFoxx schreef op 21 March 2003 @ 22:44:
Nee dat niet maar als je dus in de ladder iemand met hetzelfde punten aantal speeld win je 32 punten.

Maar ok nu bv dit scriptje:
PHP:
1
2
3
4
5
6
7
8
9
10
<?
$p1_points = 400;
$p2_points = 600;

$PD = $p2_points - $p1_points;
$WE = 1 / (10 ^ ($PD / 400)) +1;
$RN = 64 + (0 - $WE);

echo("Points Difference: " . $PD . "<br>WE Sum: " . $WE . "<br>RN Sum: " . $RN);
?> 


Uitkomst:
code:
1
2
3
Points Difference: 200
WE Sum: 1.1
RN Sum: 62.9


Volgens mij is er iets mis met de WE som..
Er komt steeds maar 1.1 uit :?
$pd = 200
200/400 = 0.5
10^0.5 is een onmogelijke machtsverheffing
aangezien ik het hoogste punt van wiskunde had voor mn eind examen van heel de opleiding :*) :/

maarre.. ZO krijg je wel problemen
Zoals ik het even vlug bekijk is het een rank-systeem waarmee je punten kan halen als je iets doet. Wat je nu dus ook kan doen is een ander punten systeem crearen zodat de uiteindelijke score alsnog in de buurt ligt bij deze. Moet je dus wel bij ongeveer 5 invoer-getallen proberen anders klopt het niet.

Ik zou je wel verder kunnen helpen maar ik weet niet waarvoor het precies is en ik weet de uitkomst (wat hij wel en niet mag zijn) niet.

Acties:
  • 0 Henk 'm!

Verwijderd

Haakjes misschien?
PHP:
1
$WE = 1 / ( (10 ^ ($PD / 400)) +1);

Acties:
  • 0 Henk 'm!

  • LauPro
  • Registratie: Augustus 2001
  • Laatst online: 17-09 19:09

LauPro

Prof Mierenneuke®

Verwijderd schreef op 21 March 2003 @ 22:50:
[...]
10^0.5 is een onmogelijke machtsverheffing
Neehor, dat is gewoon de wortel van 10 ;).

Inkoopacties - HENK terug! - Megabit
It is a war here, so be a general!


Acties:
  • 0 Henk 'm!

  • chuxiej
  • Registratie: Februari 2001
  • Laatst online: 13-07-2020
Het werkt nu eindelijk :D

Ik probeerde het is met pow() en * ipv + en het werkt nu.

Bedankt allemaal

PHP:
1
2
3
4
<?
$WE = 1 / (pow(10,(($p2_points - $p1_points) / 400)) +1);
$RN = 64 * (1 - $WE);
?>

www.dannyhiemstra.nl


Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op 21 March 2003 @ 22:50:
[...]
$pd = 200
200/400 = 0.5
10^0.5 is een onmogelijke machtsverheffing
aangezien ik het hoogste punt van wiskunde had voor mn eind examen van heel de opleiding :*) :/
Wat is er onmogelijk aan 10^0.5 ?? Dat komt gewoon goed uit hoor...
10^0.5
10^(1/2)
en dat is
2e machts wortel uit 10, is:
sqrt(10) = 3.16

(/me heeft wiskunde B1,2 :P )
edit: spuit 11 :+

[ Voor 4% gewijzigd door Verwijderd op 21-03-2003 22:55 ]


Acties:
  • 0 Henk 'm!

  • LauPro
  • Registratie: Augustus 2001
  • Laatst online: 17-09 19:09

LauPro

Prof Mierenneuke®

FireFoxx schreef op 21 March 2003 @ 22:54:
Het werkt nu eindelijk :D

Ik probeerde het is met pow() en * ipv + en het werkt nu.
Dan wil ik toch is weten waarom dat eerste nou niet lukte, de ^ lijkt me toch bedoeld voor machtsverheffing :?.

Inkoopacties - HENK terug! - Megabit
It is a war here, so be a general!


Acties:
  • 0 Henk 'm!

  • LauPro
  • Registratie: Augustus 2001
  • Laatst online: 17-09 19:09

LauPro

Prof Mierenneuke®

Verwijderd schreef op 21 March 2003 @ 22:55:
[...]
en dat is
2e machts wortel uit 10
Je mag dan wel spuit 11 zijn maar hoezo is dat de tweedemachts wortel uit 10 :?. Dat lijkt mij altijd nog 100?

Inkoopacties - HENK terug! - Megabit
It is a war here, so be a general!


Acties:
  • 0 Henk 'm!

Verwijderd

LauPro schreef op 21 maart 2003 @ 22:59:
[...]
Je mag dan wel spuit 11 zijn maar hoezo is dat de tweedemachts wortel uit 10 :?. Dat lijkt mij altijd nog 100?
Omdat:
x ^ (p/q) = q sqrt(x^p)

dus 10^(1/2) = 2 sqrt(10^1)
en 2e machts wortel is de 'standaard' wortel, en 10^1 is gewoon 10, dus wortel 10.

Edit:
de 2e machts wortel uit 10 is heel iets anders dan 10 tot de macht 2 ;) :P

[ Voor 15% gewijzigd door Verwijderd op 21-03-2003 23:14 ]


Acties:
  • 0 Henk 'm!

  • Boomerang
  • Registratie: November 2000
  • Niet online
LauPro schreef op 21 March 2003 @ 22:59:
[...]
Je mag dan wel spuit 11 zijn maar hoezo is dat de tweedemachts wortel uit 10 :?. Dat lijkt mij altijd nog 100?
10^0.5 is precies hetzelfde als de wortel uit 10, het is alleen een andere schrijfwijze. Reken maar na als je wilt. De tweedemachtswortel uit 10 is ~ 3,16.

Acties:
  • 0 Henk 'm!

  • LauPro
  • Registratie: Augustus 2001
  • Laatst online: 17-09 19:09

LauPro

Prof Mierenneuke®

Verwijderd schreef op 21 March 2003 @ 23:03:
[...]

Omdat:
x ^ (p/q) = q sqrt(x^p)

dus 10^(1/2) = 2 sqrt(10^1)
en 2e machts wortel is de 'standaard' wortel, en 10^1 is gewoon 10, dus wortel 10.

Edit:
de 2e machts wortel uit 10 is heel iets anders dan 10 tot de macht 2 ;) :P
Ik vat hem al, ik las het fout en had het woordje 'wortel' niet goed begrepen |:( .
Boomerang schreef op 21 March 2003 @ 23:03:
[...]
10^0.5 is precies hetzelfde als de wortel uit 10, het is alleen een andere schrijfwijze. Reken maar na als je wilt. De tweedemachtswortel uit 10 is ~ 3,16.
LauPro schreef op 21 March 2003 @ 22:54:
[...]
Neehor, dat is gewoon de wortel van 10 ;).
En ik zal jou vergeven dat je ook niet goed las :X.

[ Voor 4% gewijzigd door LauPro op 21-03-2003 23:30 ]

Inkoopacties - HENK terug! - Megabit
It is a war here, so be a general!


Acties:
  • 0 Henk 'm!

  • Ericston
  • Registratie: Maart 2001
  • Laatst online: 23-06 23:17
LauPro schreef op 21 maart 2003 @ 22:56:
[...]
Dan wil ik toch is weten waarom dat eerste nou niet lukte, de ^ lijkt me toch bedoeld voor machtsverheffing :?.
In alle C-style talen is ^ de bitwise xor. Op je TI-83 is het inderdaad het tekentje voor machtsverheffen. :P

Acties:
  • 0 Henk 'm!

  • LauPro
  • Registratie: Augustus 2001
  • Laatst online: 17-09 19:09

LauPro

Prof Mierenneuke®

Ericston schreef op 22 March 2003 @ 00:48:
[...]
In alle C-style talen is ^ de bitwise xor. Op je TI-83 is het inderdaad het tekentje voor machtsverheffen. :P
Op mijn TI-30Xa is dat Yx voor machtsverheffing ;). Maar dat verklaard dus waarom PHP het niet pakt, alleen vat ik niet hoe php nu aan die '0.1' komt?

Inkoopacties - HENK terug! - Megabit
It is a war here, so be a general!


Acties:
  • 0 Henk 'm!

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Dus in het voobeeldscript wordt 10 geXorred met 0 (de double wordt gecast naar een int) wat dus altijd het getal zelf oplevert, dus 10. Dit wordt duidelijk als je de xor operator kent. Xor geeft 1 terug als de bits op een positie x binnen de waardes ongelijk zijn :)

Even illustreren ;)
code:
1
2
3
10              10010              
0               00000   xor
                10010   (=10)

Vervolgens deel je die door 1, wat 0.1 oplevert en daar tel je 1 bij op. Da's dan 1.1 :)
Pagina: 1