|
|
楼主 |
发表于 2025-10-31 11:15
|
显示全部楼层
本帖最后由 Banker 于 2025-10-31 11:17 编辑
, W$ O2 U$ ]! u; X \
' @) T- T' O8 W9 G可用Excel,逐手模拟过程(但 Excel 跑不了 100000 靴,会非常卡)。
5 v( H0 H7 k2 H; |/ W% d0 bExcel 更适合 直观小样本测试,Python 才能跑大样本,Python 可以试试N万-1亿靴,10亿靴,有没有没必要?你高兴就好。
1 G; |6 [# n4 T, f' d7 `8 |+ _
! f) l& h* W( ^7 t Z% C在你电脑上运行 Python 模拟器 (版本3.0以上,若没有,在Python官网下载安装)) {% C% B( \2 P
假设你已经安装了 Python 3.x(在命令行里输入 python --version 或 py --version 看看有没有)。
( m1 S3 [" z) O) D8 m: Z先写一个最基础的 百家乐投注策略模拟器(自己定义的规则)。
+ u# G J8 f, `1 i0 a4 [5 c) _/ W6 v# h$ h' L. K+ @
步骤 1. 新建一个 Python 文件& p5 Y1 _: P( a& ~/ [
打开记事本(或 VSCode、Notepad++ 都行,我用记事本)6 W( j# S3 s; b" Q1 {" G8 M4 C
把下面的代码复制进去。. m7 v" K9 f0 g$ g+ r) f+ C
保存成 baccarat_sim.py (注意后缀是 .py)。9 e" J8 ?3 ]( D$ T, ]
( _: M- z, w9 x& d" W! _3 U
import random) k0 l/ ?# A# Z* `+ ]6 `
import argparse
: j( ~' N5 H% u+ F% ^( N9 L& Q8 ?- o& _4 X0 @; B2 \2 v4 X
# 初始化鞋子& _. R9 A3 e8 z0 s' V# T9 X4 z- z5 d
def init_shoe(decks=8):
! t, a/ T0 p" l* b) _: j # 每副牌52张,8副共416张6 Q, c; N- Z% S9 t3 F. Z y* y: T5 x
shoe = []: Z U* d+ z, E/ I
for _ in range(decks):
! ^" }7 O' H7 `1 G. U0 W/ Q, p shoe += ['P'] * 24 + ['B'] * 24 + ['T'] * 4 # 简化:庄24, 闲24, 和4$ A3 Z- [0 G: c( Y+ ?
random.shuffle(shoe)' T. {0 k$ B, W! p7 N/ h1 I
return shoe) Y- g% a2 N/ B+ U* R
3 e1 T* }! q& j# }1 }: Z' Q# 发一手
* A6 S4 h; c9 Zdef deal_hand(shoe):$ v# e+ }( R5 g0 J( e3 Q' w0 \
if len(shoe) < 6:
# d' p' {: a3 f$ g4 O1 S shoe[:] = init_shoe()
$ p0 G: d2 v! y3 F8 J8 m return shoe.pop()
8 n1 o& `3 r, L8 E0 t
) u/ s0 y& J" c' M7 ]# 模拟下注法 A# i" C' u' u& M8 T& b
def simulate_strategy_A(num_shoes=1000, commission_on=True): f! d% O* J1 ^/ h/ [: y/ d
profit = 0
, ]; K L7 l7 c# @& F! h commission_paid = 08 y+ u! C P- e5 i- Y- T6 f3 E
shoe = init_shoe()) F) _: q& B/ [( ]1 x% |
5 [ M7 a4 Y9 S s # 策略参数
+ d1 r" ]' {! ^ sequence = [1, 2, 3, 5, 8, 13, 21] # 示例进级
8 q$ s4 l3 e. D7 Z2 ~! ] stage = 0% R% ^2 h2 k& ~) k' |
target_side = "B" # 起手投注庄$ N0 h9 }6 L% O7 y! B, ?$ M
; e3 ^$ _: ^% P N @8 q/ U3 u while num_shoes > 0:
2 p0 a7 x' R) O Y; F0 ^ result = deal_hand(shoe)& E+ P0 ~) [0 d1 A/ D
8 X r, N$ _- I$ a- E7 x2 T2 E if result == 'T':
) |7 l6 ?0 I1 g( A" O5 G( G8 g # 遇到和,不输不赢,重投
6 f6 Z% {- R# C$ Y continue5 B! E( `: Q) l
u. ?4 C0 g; ]0 g& ` bet = sequence[stage], H1 N( ~1 H" k
- [( q. c0 a0 ~3 P; W/ G( g- Z if result == target_side:* T) f: E0 o# D1 {/ `2 x2 N
# 赢. T7 v5 W5 m- \7 D! q
win_amount = bet+ h" y }8 c% o7 s: k$ F1 B
if target_side == "B" and commission_on:1 n; q" G9 o% Z% q" m) B6 ~
win_amount *= 0.95 # 庄赢扣5%抽水
+ I) z2 U# k, M( T/ r commission_paid += bet * 0.05( L1 [) U5 ?; H% M& _$ f6 W
profit += win_amount% Y! h5 x+ l8 \9 E, b% O, Z
stage = 0 # reset
# z+ \/ A$ ^$ n target_side = "B" if target_side == "B" else "B" # 固定庄(A策略固定)
I% |3 N$ U4 Z+ s else:
{0 u! U/ Y+ Q6 ^8 k ` ~ # 输, `1 O S, s# d! q+ S9 G
profit -= bet- N0 s( u8 l W5 \6 A6 s; Y3 D
stage += 1
; t }0 |+ F: t) a* o6 V if stage >= len(sequence):* l3 E7 m2 u4 s* Q7 r5 i
stage = 0 # 断缆reset
0 i) f% `8 h; \; Y- R# K/ y num_shoes -= 13 j# I0 o3 ~) [8 R' }/ s" ?9 H
( x1 } ^" z! h. d: P5 v
return profit, commission_paid0 ~9 u3 l. @4 j* J& M1 |1 }
7 ^: d6 x V, g/ K! h8 J2 Y4 d# 设置命令行解析
: k, r" o6 b; r% ?def main():0 U7 t# |1 @" Y+ a( U! L/ W, o
parser = argparse.ArgumentParser(description="Simulate Baccarat strategy with commission on/off."). `8 X1 u8 r& m' \9 o
parser.add_argument('--commission', choices=['on', 'off'], default='on', help="Enable or disable commission on banker wins.")# R6 {/ f$ e8 p$ G! Y
parser.add_argument('--shoes', type=int, default=1000, help="Number of shoes to simulate.")
/ E3 _! u. I' `3 i$ J- l( \
7 g U8 n0 L( r0 F# X2 S args = parser.parse_args()) `& o. c2 `; W: E4 Y
u, R7 {# d+ l' \8 u+ y* r
# 抽水开关:开启或关闭9 g# }8 V- ^4 U
commission_on = args.commission == 'on'
& {/ K+ H# @) N! ` t" |. O6 b! d) C9 Q
result, commission = simulate_strategy_A(num_shoes=args.shoes, commission_on=commission_on)9 K# i: K2 x: h5 ?, `* ]0 ~; ]: v
print(f"最终盈利: {result:.2f}")
0 _7 y5 h( n9 _! b8 S6 T print(f"累计抽水: {commission:.2f}")/ K+ P! I# l; d& E5 h( ^$ U
5 \3 o! n0 ]8 {; l/ f7 @if __name__ == "__main__":+ U; D% O% Z; l6 K5 @
main()
. ^2 f' Y( }$ b; Q; K, `
6 P5 l6 q! O" p, e/ L* c& e8 n& R1 o5 E$ w% G0 k
步骤 2. 运行
4 r) Q! t0 S7 v( }; N8 ]/ d
3 _& N2 Z+ [# N. M在命令行里进入文件所在的文件夹,例如:8 i: h9 z! y; G5 \6 @ o
cd C:\Users\你的名字\Desktop) J; A5 }% _/ Q/ _8 o! e6 f) f, R6 Q! Z
python baccarat_sim.py# S+ H b( f1 Y% b D$ i+ E
" @+ d& D2 U# |: a- ~' C$ M# j输出会显示:; _; f* g4 v: ?7 b" j. J% y$ ]6 m
7 @) @' Y3 V2 |+ W
累计盈亏: xxx9 m; D+ }" z0 x8 N9 d
累计抽水: yyy
; V: S! k; B4 M# Y9 d; w/ a- M-------------------------------------! ]; _- f) n* I% _, v8 W" { k) y
实例:试跑3次, " t6 U+ I5 i/ ]2 v1 X+ ^$ l5 a
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py * ^* [7 `' L1 K D1 e
最终盈利: -5360.35 . z0 T ^; ~8 c& a
累计抽水: 5176.35
/ C2 H; _; |- w' h8 N2 S3 BC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py ! g! X+ Q7 w6 \- z: X2 F
最终盈利: -5661.65
0 a& k8 G5 T3 F. W累计抽水: 5174.65
$ k3 f- D0 ^1 V0 j# ZC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
: Z, v4 H N1 W& O最终盈利: -4244.50
% P9 Z8 j7 C0 w- v累计抽水: 5176.506 A6 W2 g, L# f
) K1 n( n/ p! I% i( X9 I. s- `1 o
说明你的 Python 已经能正常跑模拟了。结果也很有参考性:
4 b5 E5 L) ]2 ^+ x4 T$ L' y) E4 j M: m$ X7 D& B9 o4 m2 m
累计抽水固定在 ~5175 左右 → 这和你设置的「抽水开关 ON」一致,因为你每手下注金额相同(例如 8 单位),程序是按 Banker 抽 5% 计算的,所以长期下来,抽水会稳定在一个范围。: T% j: f; m! Q- M+ g6 X
, a7 N X0 T! F* f4 E# G最终盈利为负数(-5360、-5661、-4244)→ 这说明在 100,000 局的模拟中,哪怕加上和局不计,下注方向固定,数学期望依然是亏损。! q1 E0 H5 w+ x- i
这条缆不能直接用,用了会输。必须改缆法,或改缆法并且改下注规则。
# Z9 l" l! q9 d* Y- R. I人们喜欢举例盈利,有吸引或牛逼的效果。。。用亏损的例子,可以真实告诉你,道阻且长不容易。2 P, L. r7 X# H8 S8 z
但是别沮丧,办法总比困难多。只是,你自己悟的,是最好的。
' X& C6 Z* H; G+ |6 f6 s$ `. S8 G3 {( e1 K# T
启发,,,可以变更缆法,改变庄闲比例,指定胜负路。。。。(待续) |
|