优化开奖号码随机性
This commit is contained in:
@@ -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];
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user