优化开奖号码随机性
This commit is contained in:
@@ -55,6 +55,7 @@ final class GameLiveService
|
|||||||
$candidates = [];
|
$candidates = [];
|
||||||
$bestNumber = null;
|
$bestNumber = null;
|
||||||
$bestLoss = null;
|
$bestLoss = null;
|
||||||
|
$bestNumbers = [];
|
||||||
$status = (int) $record['status'];
|
$status = (int) $record['status'];
|
||||||
$canCalculate = $elapsed >= $betSeconds && ($status === 0 || $status === 1);
|
$canCalculate = $elapsed >= $betSeconds && ($status === 0 || $status === 1);
|
||||||
if ($canCalculate) {
|
if ($canCalculate) {
|
||||||
@@ -66,9 +67,14 @@ final class GameLiveService
|
|||||||
];
|
];
|
||||||
if ($bestLoss === null || bccomp((string) $loss, (string) $bestLoss, 4) < 0) {
|
if ($bestLoss === null || bccomp((string) $loss, (string) $bestLoss, 4) < 0) {
|
||||||
$bestLoss = $loss;
|
$bestLoss = $loss;
|
||||||
$bestNumber = $n;
|
$bestNumbers = [$n];
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (bccomp((string) $loss, (string) $bestLoss, 4) === 0) {
|
||||||
|
$bestNumbers[] = $n;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
$bestNumber = self::pickRandomNumber($bestNumbers);
|
||||||
}
|
}
|
||||||
|
|
||||||
return [
|
return [
|
||||||
@@ -131,14 +137,20 @@ final class GameLiveService
|
|||||||
$candidates = [];
|
$candidates = [];
|
||||||
$bestNumber = null;
|
$bestNumber = null;
|
||||||
$bestLoss = null;
|
$bestLoss = null;
|
||||||
|
$bestNumbers = [];
|
||||||
for ($n = 1; $n <= $pickMax; $n++) {
|
for ($n = 1; $n <= $pickMax; $n++) {
|
||||||
$loss = self::estimateLossForNumber($bets, $n);
|
$loss = self::estimateLossForNumber($bets, $n);
|
||||||
$candidates[] = ['number' => $n, 'estimated_loss' => $loss];
|
$candidates[] = ['number' => $n, 'estimated_loss' => $loss];
|
||||||
if ($bestLoss === null || bccomp((string) $loss, (string) $bestLoss, 4) < 0) {
|
if ($bestLoss === null || bccomp((string) $loss, (string) $bestLoss, 4) < 0) {
|
||||||
$bestLoss = $loss;
|
$bestLoss = $loss;
|
||||||
$bestNumber = $n;
|
$bestNumbers = [$n];
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (bccomp((string) $loss, (string) $bestLoss, 4) === 0) {
|
||||||
|
$bestNumbers[] = $n;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
$bestNumber = self::pickRandomNumber($bestNumbers);
|
||||||
|
|
||||||
$finalNumber = $manualNumber ?? $bestNumber;
|
$finalNumber = $manualNumber ?? $bestNumber;
|
||||||
$finalLoss = '0.0000';
|
$finalLoss = '0.0000';
|
||||||
@@ -291,4 +303,16 @@ final class GameLiveService
|
|||||||
}
|
}
|
||||||
return $payout;
|
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