Merge branch 'master' into develop

This commit is contained in:
Dennis Eichhorn 2026-08-04 16:22:12 +02:00
commit c490d8729a
4 changed files with 28 additions and 6 deletions

View File

@ -88,9 +88,15 @@ final class Elo
*/ */
public function winProbability(int $elo1, int $elo2, bool $canDraw = false) : float public function winProbability(int $elo1, int $elo2, bool $canDraw = false) : float
{ {
return $canDraw $expectedWin = 1 / (1 + \pow(10, ($elo2 - $elo1) / 400));
? -1.0 // @todo implement
: 1 / (1 + \pow(10, ($elo2 - $elo1) / 400)); if (!$canDraw) {
return $expectedWin;
}
$draw = $this->drawProbability($elo1, $elo2);
return (1.0 - $draw) * $expectedWin;
} }
/** /**
@ -105,6 +111,12 @@ final class Elo
*/ */
public function drawProbability(int $elo1, int $elo2) : float public function drawProbability(int $elo1, int $elo2) : float
{ {
return -1.0; // @todo implement $diff = \abs($elo1 - $elo2);
// Approximate draw probability: highest when ratings are equal,
// decreasing smoothly as the rating difference increases.
$maxDraw = 0.30;
return $maxDraw * \exp(-($diff ** 2) / (2 * (200 ** 2)));
} }
} }

View File

@ -27,6 +27,8 @@ final class GeometricDistribution
/** /**
* Constructor. * Constructor.
* *
* Example: dice roll
*
* @since 1.0.0 * @since 1.0.0
* @codeCoverageIgnore * @codeCoverageIgnore
*/ */
@ -34,6 +36,14 @@ final class GeometricDistribution
{ {
} }
/**
* How often to roll to get a specific value with at least percent chance
*/
public static function getHowOften(float $p, float $percent) : float
{
return log(1.0 - $percent) / log(1 - $p);
}
/** /**
* Get probability mass function. * Get probability mass function.
* *

View File

@ -64,7 +64,7 @@ class Heap
* *
* @since 1.0.0 * @since 1.0.0
*/ */
public function insort(HeapItemInterface $x, int $lo = 0) : void public function insert(HeapItemInterface $x, int $lo = 0) : void
{ {
$hi = \count($this->nodes); $hi = \count($this->nodes);

View File

@ -98,7 +98,7 @@ final class TesseractOcrTest extends \PHPUnit\Framework\TestCase
* @group framework * @group framework
*/ */
/* /*
@todo somehow this suddenly takes a long time. this takes a long time.
Might be because a php version update resulting in float 32->64bit changes? Might be because a php version update resulting in float 32->64bit changes?
Fix it, it was working with php 8.0 Fix it, it was working with php 8.0
public function testOcrWithThresholdingRotating() : void public function testOcrWithThresholdingRotating() : void