优化 ai小班长百家乐押注
This commit is contained in:
@@ -144,6 +144,13 @@ class AiBaccaratBetJob implements ShouldQueue
|
||||
$percent = $aiPrediction['percentage'];
|
||||
$reason = $aiPrediction['reason'];
|
||||
|
||||
// 买单活动期间不允许 AI 选择观望,避免错过“输也可返还”的活动资格。
|
||||
if ($isInLossCoverWindow && $betType === 'pass') {
|
||||
$decisionSource = 'local';
|
||||
$betType = $this->resolveLocalBetType($recentResults, false);
|
||||
$reason = trim($reason.' 买单活动进行中,本局禁止观望,已切换本地强制参战策略。');
|
||||
}
|
||||
|
||||
if ($betType !== 'pass') {
|
||||
if ($isInLossCoverWindow) {
|
||||
// 买单活动进行中且金币足够时,直接按百家乐单局最高限额下注。
|
||||
@@ -162,19 +169,8 @@ class AiBaccaratBetJob implements ShouldQueue
|
||||
} else {
|
||||
// AI 不可用时回退本地路单决策(保底逻辑)
|
||||
$decisionSource = 'local';
|
||||
$bigCount = count(array_filter($recentResults, fn (string $r) => $r === 'big'));
|
||||
$smallCount = count(array_filter($recentResults, fn (string $r) => $r === 'small'));
|
||||
|
||||
$strategy = rand(1, 100);
|
||||
if ($strategy <= 10) {
|
||||
$betType = 'triple'; // 10% 概率博豹子
|
||||
} elseif ($bigCount > $smallCount) {
|
||||
$betType = rand(1, 100) <= 70 ? 'big' : 'small';
|
||||
} elseif ($smallCount > $bigCount) {
|
||||
$betType = rand(1, 100) <= 70 ? 'small' : 'big';
|
||||
} else {
|
||||
$betType = rand(0, 10) === 0 ? 'pass' : (rand(0, 1) ? 'big' : 'small');
|
||||
}
|
||||
// 买单活动期间,本地兜底策略同样不能返回观望。
|
||||
$betType = $this->resolveLocalBetType($recentResults, ! $isInLossCoverWindow);
|
||||
|
||||
if ($betType !== 'pass') {
|
||||
if ($isInLossCoverWindow) {
|
||||
@@ -359,6 +355,38 @@ class AiBaccaratBetJob implements ShouldQueue
|
||||
SaveMessageJob::dispatch($msg);
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成本地路单兜底下注方向。
|
||||
*
|
||||
* @param array<int, string> $recentResults 最近已结算局次结果
|
||||
* @param bool $allowPass 是否允许返回观望
|
||||
*/
|
||||
private function resolveLocalBetType(array $recentResults, bool $allowPass): string
|
||||
{
|
||||
$bigCount = count(array_filter($recentResults, fn (string $result) => $result === 'big'));
|
||||
$smallCount = count(array_filter($recentResults, fn (string $result) => $result === 'small'));
|
||||
|
||||
// 默认保留少量押豹子概率,维持 AI 小班长原本的下注风格。
|
||||
if (rand(1, 100) <= 10) {
|
||||
return 'triple';
|
||||
}
|
||||
|
||||
if ($bigCount > $smallCount) {
|
||||
return rand(1, 100) <= 70 ? 'big' : 'small';
|
||||
}
|
||||
|
||||
if ($smallCount > $bigCount) {
|
||||
return rand(1, 100) <= 70 ? 'small' : 'big';
|
||||
}
|
||||
|
||||
// 只有非买单活动时才允许空仓;活动期间必须至少押大或押小。
|
||||
if ($allowPass && rand(0, 10) === 0) {
|
||||
return 'pass';
|
||||
}
|
||||
|
||||
return rand(0, 1) === 0 ? 'big' : 'small';
|
||||
}
|
||||
|
||||
/**
|
||||
* AI 资金管理逻辑:优先领取补偿,再按“超过 100 万才存款”的规则整理持仓。
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user