|
|
楼主 |
发表于 2025-10-31 11:15
|
显示全部楼层
本帖最后由 Banker 于 2025-10-31 11:17 编辑
& n( a, O; P" [6 h% V. Z, p* k3 ]: U1 ]3 t" \7 r1 }) c0 I$ |
可用Excel,逐手模拟过程(但 Excel 跑不了 100000 靴,会非常卡)。 ?' i7 o" S1 H+ U* E! W; b$ x* y9 N
Excel 更适合 直观小样本测试,Python 才能跑大样本,Python 可以试试N万-1亿靴,10亿靴,有没有没必要?你高兴就好。
, }3 c ~/ b+ \2 m4 y! a% \# i( E6 ]) m# r$ q
在你电脑上运行 Python 模拟器 (版本3.0以上,若没有,在Python官网下载安装)
( S' i* f- q4 l3 T% c* ~, ]假设你已经安装了 Python 3.x(在命令行里输入 python --version 或 py --version 看看有没有)。* d5 X9 Y4 V) Y( c6 g6 u
先写一个最基础的 百家乐投注策略模拟器(自己定义的规则)。6 @( ]/ _# z3 K# V" \8 E
3 S1 v) w% m9 g; d& j步骤 1. 新建一个 Python 文件
. ~1 G# ~+ h$ a7 B/ }- [打开记事本(或 VSCode、Notepad++ 都行,我用记事本)
8 t. A/ z0 E# f+ X把下面的代码复制进去。
" Y2 ?4 l. p2 b+ t* `保存成 baccarat_sim.py (注意后缀是 .py)。' b! u' u1 Z6 U! o5 N |* h
3 ^; d( W7 H. D7 ^3 ~! Fimport random
: J9 b& Y& {; Y! r) v+ M4 d9 Eimport argparse) z. b% c, T; y" a. |) \6 n
- [) s7 i& {8 j4 P8 B" a; l
# 初始化鞋子
8 m6 e/ H+ H0 ?! e( W. C/ N" Ddef init_shoe(decks=8):
# G* ]/ I8 ^6 F3 @% d # 每副牌52张,8副共416张: `7 ^- H' j& c3 Y# P1 I
shoe = []
: L6 |! u G+ i4 m I H( I5 l! x% A for _ in range(decks):
' D6 g% b$ W( d7 y" | shoe += ['P'] * 24 + ['B'] * 24 + ['T'] * 4 # 简化:庄24, 闲24, 和4
+ B+ t% |8 ~1 m( ~3 a& [$ M random.shuffle(shoe): {- s0 O' D; ~6 L
return shoe
) Y K7 z' |% l% ]- L( h- q/ k2 b* S" L; q
# 发一手
0 }- E( u2 `$ }4 S- |9 C7 o2 N9 G8 \def deal_hand(shoe):; Q9 |! D ^+ P8 p! \2 y
if len(shoe) < 6:1 g3 a8 t& [, F0 r! H
shoe[:] = init_shoe()" I. p( Q, D% c0 j
return shoe.pop()( g( y/ C4 _/ O
5 t9 c4 B) {1 E' O1 x
# 模拟下注法 A
: X6 A: @6 @! l) ydef simulate_strategy_A(num_shoes=1000, commission_on=True):' g* i& ~8 ^, c1 T& H; W
profit = 05 p" j2 _# x1 e( L
commission_paid = 0' W6 R; P3 t! x
shoe = init_shoe()7 l# w, W: e) G* l! l
- s. v' H8 q& E9 T* c9 S: S
# 策略参数
3 f) V8 T5 }" R& b( H9 j; L sequence = [1, 2, 3, 5, 8, 13, 21] # 示例进级0 _3 g$ {; ^; A3 m" y3 G/ R$ _6 q0 |# ]' }
stage = 09 p1 _% F+ h9 v7 ?& g( m
target_side = "B" # 起手投注庄, w/ |. d' M4 |8 H
4 S0 J$ S; l7 j5 ]# z# [6 H
while num_shoes > 0:
8 L5 w, A5 ~$ b: _ result = deal_hand(shoe)
. @' \$ C' I2 n4 V4 |$ ] k" ? \
( Y9 }) E; [2 t8 C( b5 h& C if result == 'T':
; l. t/ H4 W* K2 v& K$ p # 遇到和,不输不赢,重投
" X8 Z+ P8 n4 E' M5 L% h8 w continue' `4 {( B6 m# s8 ^" b
& V% R7 R4 F n
bet = sequence[stage]
' _3 H, a& A3 j% x8 E# @/ C( U0 R
: s9 d) T; x, p" L+ o if result == target_side:
% I2 e- \+ X2 Y' V0 ?: X G& W6 i # 赢
$ {% Y& R% _$ O7 F3 S, a# \ win_amount = bet0 S1 p8 \6 `" b" m9 C
if target_side == "B" and commission_on:5 a$ U3 ~/ m, b
win_amount *= 0.95 # 庄赢扣5%抽水
4 d: Y( y. n4 H9 d commission_paid += bet * 0.05% I" _9 P) A1 \0 s1 ~. A
profit += win_amount
! I6 U- y2 p, |4 B& d4 h0 \. V stage = 0 # reset
; G$ |- [7 W9 ^# t target_side = "B" if target_side == "B" else "B" # 固定庄(A策略固定)5 {/ t0 R" j' \9 ^
else:- z. W8 N& J: `. o3 ^0 P
# 输0 \" x8 c' p; b5 w# ], m0 l0 r$ X
profit -= bet# P, f5 Z! r: w6 g& T) Z5 M4 O2 z
stage += 1
* l$ I P- s, H) { if stage >= len(sequence):; p( Y" S ]- v4 F( ^1 d" M
stage = 0 # 断缆reset' ~5 ?5 I ^$ Y) n
num_shoes -= 1
/ Z6 C8 e' p" }- @: u
' K1 D6 y6 z* | return profit, commission_paid8 w- s$ U4 t! ]
7 |4 Q3 W8 ]% n4 Z
# 设置命令行解析
( s p6 b# |* K, Y0 @6 x# ydef main():2 M* h$ a V, N
parser = argparse.ArgumentParser(description="Simulate Baccarat strategy with commission on/off."). r* v! S( u }1 n# \
parser.add_argument('--commission', choices=['on', 'off'], default='on', help="Enable or disable commission on banker wins.")
% c2 T6 ~4 a' V. Z' w' ?, ? c parser.add_argument('--shoes', type=int, default=1000, help="Number of shoes to simulate.")
g. G& N6 Y/ g3 ~7 M0 c3 N O0 J$ y5 m) G3 w1 _& o
args = parser.parse_args()
8 S1 W0 D E* S3 J
. t4 B) A" l* {* g( y # 抽水开关:开启或关闭9 u' l. A" r' S6 i; ^
commission_on = args.commission == 'on'; a( R5 J; h: @ x8 Q0 ?4 Z
: i7 V; r/ e" a( f+ W result, commission = simulate_strategy_A(num_shoes=args.shoes, commission_on=commission_on); E( v- t! Y5 O5 P8 i' z& F) B
print(f"最终盈利: {result:.2f}")
: m# D" ?0 L' q- e* O* z4 H print(f"累计抽水: {commission:.2f}"); O% h' V" R+ c9 Y
1 t" Q! B& }% s) ]# Jif __name__ == "__main__":7 t- g" T8 l; L6 k. ~
main()) _; g3 \+ Y2 q* H0 {
( u6 s% I7 E/ b/ {8 V9 b9 l& {: U- G( `. b$ X+ g5 @. k% X
步骤 2. 运行4 O. d# N( o0 ?$ t$ g- r; x
' r* |& B. p; J5 d) |# W. l
在命令行里进入文件所在的文件夹,例如:& f; r4 e' C, z
cd C:\Users\你的名字\Desktop
. n( T: m' v" n* i) xpython baccarat_sim.py
4 m) P6 v: i; h" o" ]) q5 n9 s& ~! v2 a; `5 A8 e) H7 p. i
输出会显示:
" D- Y5 e$ w, G G1 y
) s# m" I3 v+ [' M5 Y累计盈亏: xxx# a, I0 v8 l$ q: n
累计抽水: yyy1 A8 N3 y7 M" O2 o
-------------------------------------
& a' a+ @* r- O2 J实例:试跑3次,
$ Z6 }& P5 n7 a |C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py % G* }' j5 m F9 ?8 @! [8 c: c9 @
最终盈利: -5360.35
; d; x7 o$ ?4 ` j累计抽水: 5176.35 7 ^9 Q/ Q1 m, P
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
6 g3 p6 G$ J f3 g! b) i+ h最终盈利: -5661.65 5 e4 Y$ R/ s: M1 I* N \$ S) ?! \
累计抽水: 5174.65 2 k4 k' v3 t& g7 M9 v
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
5 V: B2 B2 Q4 P9 I; S& B9 R& s最终盈利: -4244.50 ; R6 k! Z7 q9 s5 c2 \
累计抽水: 5176.50
0 R4 U2 Q9 S2 {: m9 {2 m6 X0 @9 Z$ p; j) }" w
说明你的 Python 已经能正常跑模拟了。结果也很有参考性:3 f! \. t* o# M1 m; x) U' z
5 Q ^7 Z# y- A% {1 i6 B
累计抽水固定在 ~5175 左右 → 这和你设置的「抽水开关 ON」一致,因为你每手下注金额相同(例如 8 单位),程序是按 Banker 抽 5% 计算的,所以长期下来,抽水会稳定在一个范围。0 V+ e% v& k6 V( N) \# `5 S
5 y% U7 o, y& u( d% f0 b+ z最终盈利为负数(-5360、-5661、-4244)→ 这说明在 100,000 局的模拟中,哪怕加上和局不计,下注方向固定,数学期望依然是亏损。
( |' |) F( y3 r. ~) o& U( D这条缆不能直接用,用了会输。必须改缆法,或改缆法并且改下注规则。
6 V, S% r* ]. K! n人们喜欢举例盈利,有吸引或牛逼的效果。。。用亏损的例子,可以真实告诉你,道阻且长不容易。
! g! m7 ~ I2 m4 S, M7 }9 ?但是别沮丧,办法总比困难多。只是,你自己悟的,是最好的。
' D; X- i, h7 k, o( z" x
% B) }4 T3 q5 ]# n% E启发,,,可以变更缆法,改变庄闲比例,指定胜负路。。。。(待续) |
|