|
|
楼主 |
发表于 2025-10-31 11:15
|
显示全部楼层
本帖最后由 Banker 于 2025-10-31 11:17 编辑
8 M/ Q# `2 |4 c) G0 ]
4 A7 D! ^0 I" [7 w可用Excel,逐手模拟过程(但 Excel 跑不了 100000 靴,会非常卡)。& n3 e4 ^; ~8 l0 \2 b3 G8 c' y
Excel 更适合 直观小样本测试,Python 才能跑大样本,Python 可以试试N万-1亿靴,10亿靴,有没有没必要?你高兴就好。' |* z. o$ v" m% V
1 X4 U8 J) f& ]" z8 o3 O
在你电脑上运行 Python 模拟器 (版本3.0以上,若没有,在Python官网下载安装)
$ H' X0 {2 ]/ z& p% j5 E3 ~% ?假设你已经安装了 Python 3.x(在命令行里输入 python --version 或 py --version 看看有没有)。
# K, K# c2 O9 {4 F! ~先写一个最基础的 百家乐投注策略模拟器(自己定义的规则)。
& F& h# z: u9 Y) Y2 O" n, k& e2 E2 v1 ~0 H# P9 r# |+ @
步骤 1. 新建一个 Python 文件
& p4 H/ ]$ _/ |) P. E C6 Y2 c; F1 z: S打开记事本(或 VSCode、Notepad++ 都行,我用记事本)6 Z& i, d2 j/ z! Y1 E
把下面的代码复制进去。 L$ H7 {1 v5 R- ^7 O* D$ U
保存成 baccarat_sim.py (注意后缀是 .py)。
) D( ` B2 O4 m; G2 S& f* `
$ v0 G! f' r0 r( timport random' ?: ~7 o! K5 V @" \6 f+ x
import argparse
2 i. X3 l$ J" H' Q8 [% t7 h$ E: r9 |
# 初始化鞋子
" m$ {4 g% f! X. E& bdef init_shoe(decks=8):& P7 q9 r0 u4 t8 C; A5 r
# 每副牌52张,8副共416张4 v& R% V; c) r' y0 U& Z" @, R
shoe = []
% e# ]7 m/ u, @- G8 K( ?5 z for _ in range(decks):* k: t+ W# O1 w. l4 y' {
shoe += ['P'] * 24 + ['B'] * 24 + ['T'] * 4 # 简化:庄24, 闲24, 和4
6 b8 M! }" s' m random.shuffle(shoe)# s2 E3 |7 X) R# J6 n0 y
return shoe
* Z" H9 V, C9 ~& z" R& {( [/ v( Q# ^0 y( Q7 O2 M
# 发一手
w3 k: a9 X/ D" vdef deal_hand(shoe):
. D0 s, v' e; a- @) Q7 ^- o# x if len(shoe) < 6:
% s8 |; f0 `4 q7 p shoe[:] = init_shoe()1 f* p4 {( n9 k0 K
return shoe.pop(). ?4 {3 Q! l9 |: E, n
2 ]' }: Y. s+ `, y1 u& \
# 模拟下注法 A# K$ f J1 g; ?; ~# {7 \) H
def simulate_strategy_A(num_shoes=1000, commission_on=True):; X/ _; f+ @8 b* l% j; l, T
profit = 0
& H$ J, O5 H8 K: k commission_paid = 0( `- _# k5 @2 Z& U# i& u
shoe = init_shoe()6 h( _6 x& {: E. E! z+ H
, A8 i! l4 i) F$ A) O1 j
# 策略参数
9 e6 Z( U( h, M, P. G# Q sequence = [1, 2, 3, 5, 8, 13, 21] # 示例进级; [; [# n& T& @: {& I6 v. [0 W
stage = 0
a# X8 ^. h; E9 v% J# n; x target_side = "B" # 起手投注庄
8 T0 V8 M+ ?' l" ~' g f
% S& T+ A. [* t( B; W( |& }+ S1 g! o while num_shoes > 0:5 z; H4 @4 [; O' C, E' E$ G
result = deal_hand(shoe)
' n( Q) H5 f3 q$ p+ i+ q) R0 E6 c; s% N3 X. p+ d) b0 Y- e
if result == 'T': ! |& y# A7 @, d# v0 y# P
# 遇到和,不输不赢,重投6 _5 s8 u, Q% G) V9 w0 f
continue
! Y# k. P. J6 U% Z& _+ p) R% @+ p
. ^% t4 `9 G( e" T) L$ o bet = sequence[stage]( ~' g; y3 Q e1 e: g
) h/ Q, A+ ~! `$ ?7 W* F if result == target_side:3 ]/ R& J* I% h; L e
# 赢
) h7 f2 `% c. J( D win_amount = bet; f/ {% W, {$ g
if target_side == "B" and commission_on:
) P5 D0 ?* f0 s) s+ _3 A/ p win_amount *= 0.95 # 庄赢扣5%抽水1 B/ Y0 ^: y1 `0 z7 @: D
commission_paid += bet * 0.057 [/ R7 f5 D) k7 P! A6 b
profit += win_amount0 f. h# Q, ]- k3 r
stage = 0 # reset: c D* u4 G/ Z
target_side = "B" if target_side == "B" else "B" # 固定庄(A策略固定)
5 Y3 s# f0 \3 {% r u5 L6 O" I7 w else: O8 h: R9 O1 I# P2 N `& `1 d
# 输
# }/ L. t4 f) E- ^# t/ h: E1 F profit -= bet* v, E' S( n" ?/ r4 v: |. Y
stage += 1" D8 ^3 S7 p5 X: h/ i+ ?5 Q: o: J
if stage >= len(sequence):
- I% O% c2 j; F$ O stage = 0 # 断缆reset
. ]1 i! q- f3 Z: u& x, U num_shoes -= 12 I* T, q( q6 r5 U: |, N
1 I5 s9 G2 ]! M% Y; j' w V3 D/ U) D
return profit, commission_paid
* K* _* D0 ?4 c, B( m4 O3 C5 ~% V4 z- w& Z. u* C
# 设置命令行解析
6 J( L0 \% t2 A" o+ R0 bdef main():
+ ]! y! f3 ]/ ]4 @4 E- r parser = argparse.ArgumentParser(description="Simulate Baccarat strategy with commission on/off.")8 z0 t4 Z# S* X1 d3 `- i7 s
parser.add_argument('--commission', choices=['on', 'off'], default='on', help="Enable or disable commission on banker wins.")
p4 ^. O6 O/ Z' ]; B+ G parser.add_argument('--shoes', type=int, default=1000, help="Number of shoes to simulate.")
: V1 E; H2 [1 M r % W2 I; _+ N9 w" X+ A/ u2 M$ `
args = parser.parse_args()
1 R; J/ V Q1 n% ~ \ v
- ^1 A( d7 m# ^2 u1 j% Y. v # 抽水开关:开启或关闭$ W. d4 |8 b8 Q6 s# j S
commission_on = args.commission == 'on'
: y/ b7 x5 s9 a, j( C% l6 s! r' v
8 E u5 y! P1 z; w result, commission = simulate_strategy_A(num_shoes=args.shoes, commission_on=commission_on)
" O: j- c9 z, {/ i print(f"最终盈利: {result:.2f}")/ g$ x& I1 U4 W
print(f"累计抽水: {commission:.2f}")2 B% i) T# W' ~) W7 |
, h$ x4 l. w; i( z. Fif __name__ == "__main__":* _( y# M1 n; K; D% t
main()
& W9 u' U) _$ f/ R
0 F) ]2 u% E* c: [, j0 D- q& [
3 W x$ C ~( H2 F# O步骤 2. 运行2 O& g7 ?- D/ k: C
5 [; ^$ B% z; T, }; v
在命令行里进入文件所在的文件夹,例如:- z6 Q* w+ P2 g" B6 [0 a+ r9 ~
cd C:\Users\你的名字\Desktop4 F& t# o. D2 Z4 }. L
python baccarat_sim.py
( q: A( j' w$ }5 v" z/ M8 R, w3 a" |/ l1 k% D, e
输出会显示:6 K1 x. Q" D/ }, @+ y. N
3 c" `2 W% m# e& a, i
累计盈亏: xxx
3 T. X/ b" K! |" p) \0 l+ T1 w累计抽水: yyy% f9 x l6 }7 K
-------------------------------------
* ^$ n; M2 I$ i( N实例:试跑3次, $ O" Q8 s/ ]' ], t0 ]
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py @% ^5 e: y' ~6 o* Z. Z- F! F4 V
最终盈利: -5360.35
- E3 \7 a4 s. p# j L1 u7 \& ?累计抽水: 5176.35 . @* C9 Y! Q' {" `& D% M7 r
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py + M: _2 p& z4 i8 t/ K2 H5 s" K
最终盈利: -5661.65 % U; Q. V; `4 b& `2 k. f; ~$ ?
累计抽水: 5174.65 * o2 D2 |0 E: @2 f
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
/ s1 S% G" r" P {0 V+ @最终盈利: -4244.50 a* }8 c/ P. N1 C' |5 b# d/ F
累计抽水: 5176.50, |, _8 E5 [ F# V8 |/ v3 L
. j h! y/ w# m o) b+ |说明你的 Python 已经能正常跑模拟了。结果也很有参考性:
0 q2 `( |2 S4 t/ f6 y! i+ t/ B+ b* D# n
累计抽水固定在 ~5175 左右 → 这和你设置的「抽水开关 ON」一致,因为你每手下注金额相同(例如 8 单位),程序是按 Banker 抽 5% 计算的,所以长期下来,抽水会稳定在一个范围。& U. X' h! n2 K1 n+ s
( A+ \5 J+ O" j7 }7 L1 s
最终盈利为负数(-5360、-5661、-4244)→ 这说明在 100,000 局的模拟中,哪怕加上和局不计,下注方向固定,数学期望依然是亏损。6 X; R# L1 R2 `9 L5 T/ m
这条缆不能直接用,用了会输。必须改缆法,或改缆法并且改下注规则。
1 f, b% K) L5 j6 u9 i! T/ L人们喜欢举例盈利,有吸引或牛逼的效果。。。用亏损的例子,可以真实告诉你,道阻且长不容易。
2 p& X3 |# ~8 W5 A但是别沮丧,办法总比困难多。只是,你自己悟的,是最好的。
$ r' U b8 r# h) L$ Y2 t" ]2 o {/ m' u( ?( `0 }
启发,,,可以变更缆法,改变庄闲比例,指定胜负路。。。。(待续) |
|