优化开奖号码随机性

This commit is contained in:
2026-04-16 17:42:28 +08:00
parent 545a818094
commit 5ee0f2b1f4

View File

@@ -55,6 +55,7 @@ final class GameLiveService
$candidates = [];
$bestNumber = null;
$bestLoss = null;
$bestNumbers = [];
$status = (int) $record['status'];
$canCalculate = $elapsed >= $betSeconds && ($status === 0 || $status === 1);
if ($canCalculate) {
@@ -66,9 +67,14 @@ final class GameLiveService
];
if ($bestLoss === null || bccomp((string) $loss, (string) $bestLoss, 4) < 0) {
$bestLoss = $loss;
$bestNumber = $n;
$bestNumbers = [$n];
continue;
}
if (bccomp((string) $loss, (string) $bestLoss, 4) === 0) {
$bestNumbers[] = $n;
}
}
$bestNumber = self::pickRandomNumber($bestNumbers);
}
return [
@@ -131,14 +137,20 @@ final class GameLiveService
$candidates = [];
$bestNumber = null;
$bestLoss = null;
$bestNumbers = [];
for ($n = 1; $n <= $pickMax; $n++) {
$loss = self::estimateLossForNumber($bets, $n);
$candidates[] = ['number' => $n, 'estimated_loss' => $loss];
if ($bestLoss === null || bccomp((string) $loss, (string) $bestLoss, 4) < 0) {
$bestLoss = $loss;
$bestNumber = $n;
$bestNumbers = [$n];
continue;
}
if (bccomp((string) $loss, (string) $bestLoss, 4) === 0) {
$bestNumbers[] = $n;
}
}
$bestNumber = self::pickRandomNumber($bestNumbers);
$finalNumber = $manualNumber ?? $bestNumber;
$finalLoss = '0.0000';
@@ -291,4 +303,16 @@ final class GameLiveService
}
return $payout;
}
private static function pickRandomNumber(array $numbers): ?int
{
if ($numbers === []) {
return null;
}
if (count($numbers) === 1) {
return $numbers[0];
}
$index = random_int(0, count($numbers) - 1);
return $numbers[$index];
}
}