|
|
楼主 |
发表于 2025-10-31 11:15
|
显示全部楼层
本帖最后由 Banker 于 2025-10-31 11:17 编辑
0 ~& C' x8 ^! U. G
! a$ F; C- h2 {" ~6 K可用Excel,逐手模拟过程(但 Excel 跑不了 100000 靴,会非常卡)。3 g4 n* L, i0 e! I' M5 Q8 l
Excel 更适合 直观小样本测试,Python 才能跑大样本,Python 可以试试N万-1亿靴,10亿靴,有没有没必要?你高兴就好。
0 M2 s7 ]" ^& N
& C$ S3 U4 Y0 H& A在你电脑上运行 Python 模拟器 (版本3.0以上,若没有,在Python官网下载安装)
, z8 u5 y M* H9 s假设你已经安装了 Python 3.x(在命令行里输入 python --version 或 py --version 看看有没有)。
+ z, r2 T) n" \先写一个最基础的 百家乐投注策略模拟器(自己定义的规则)。4 `+ ]( f: t. T. ]8 V% l+ |! y- F
4 i* h) W7 L4 H) _
步骤 1. 新建一个 Python 文件% f6 U/ m" l3 \+ K4 s5 p
打开记事本(或 VSCode、Notepad++ 都行,我用记事本)( N# I8 A( a$ H/ E3 W# M
把下面的代码复制进去。& C" E5 m, u% ?+ P* F
保存成 baccarat_sim.py (注意后缀是 .py)。/ @# y+ g+ p0 ~9 A& m: z
& A9 U5 C+ ^/ ~; v, e! ]6 Gimport random
) d/ H; [- K( Y4 o- Kimport argparse
5 g; v* V* o3 ]$ k6 @
3 o' V/ L3 Y+ P0 b# 初始化鞋子
! B" k$ s- A3 n7 L [1 E; e5 g9 V! R" cdef init_shoe(decks=8): o% Q2 w$ L! q& L5 B' K7 K6 y
# 每副牌52张,8副共416张# z2 o5 v5 A0 T* Z
shoe = []
V1 }. X4 _# T7 N7 K* t8 `' v for _ in range(decks):! r& z/ M* k) D7 h8 Y
shoe += ['P'] * 24 + ['B'] * 24 + ['T'] * 4 # 简化:庄24, 闲24, 和4& K& D! r" i/ @& V
random.shuffle(shoe)
, V% C* b* \1 @2 j# q6 g4 y' i& e return shoe
: B4 o: k3 D7 u9 F, o1 M* R
) Y: s# F7 L3 z- u& V% d* \: d5 {1 x+ j# 发一手
- R( b# x' c$ o$ Tdef deal_hand(shoe):0 h0 |- x6 K6 z" ~5 `8 b& N
if len(shoe) < 6:
$ R5 |: z* K' [" @% u7 i1 B shoe[:] = init_shoe()
; w l V+ {. w' `- b/ ^, } return shoe.pop()0 g) M' O4 p" c6 ^
2 @, C3 F9 E6 l* o7 i. d# 模拟下注法 A$ R: h0 G, C- O2 q d
def simulate_strategy_A(num_shoes=1000, commission_on=True):" E. y: ]- E% L/ J" l. i) D/ Q
profit = 0
+ u& S/ t, T1 X3 E5 u commission_paid = 0+ v/ \' w" F. C+ o6 ~: @$ U
shoe = init_shoe()
# ^8 U% v4 H9 Y' K& H2 @- E ; d" }8 I* D# z# l7 m
# 策略参数
) [* e+ ]) |. x( o$ x# d Y sequence = [1, 2, 3, 5, 8, 13, 21] # 示例进级6 T1 n& m* |7 I
stage = 0
7 Y& Z/ D: r, ?5 W1 e: I" B7 x& }2 S target_side = "B" # 起手投注庄+ A; L9 K1 [" ]1 T& {, v6 Q5 ^
' q5 h8 U# I; P7 l: F
while num_shoes > 0:
0 a6 K% [( x6 h9 T: j0 G% S result = deal_hand(shoe)& J5 E6 Y, `* L1 |8 t) l' x
5 `0 N: L) [4 i$ K. a if result == 'T': $ p3 ?: A, _4 b7 `6 U
# 遇到和,不输不赢,重投
, q. h ]1 i3 V continue) E2 J3 p3 ~0 e9 [; w2 I% W
8 }$ W5 O$ e7 l! c! K v+ U bet = sequence[stage]( j. c2 P2 t; q# @& }
8 M$ ~9 H3 E7 U9 b7 i/ L if result == target_side:
3 c9 J$ t2 A. v. n/ |# J # 赢
) C2 N* N( Y9 i& F win_amount = bet
0 \: n- B5 O( U( D) [+ H if target_side == "B" and commission_on:) |9 y/ D7 e+ ?
win_amount *= 0.95 # 庄赢扣5%抽水2 {+ A. X+ T& C1 e
commission_paid += bet * 0.055 s6 i; K- C2 N" o v' u
profit += win_amount
B: X4 g! J% m; | stage = 0 # reset% x8 R6 f1 p8 @
target_side = "B" if target_side == "B" else "B" # 固定庄(A策略固定)+ M. B) A% o* F
else:8 A U# T5 H; [$ X+ D2 b- k# i; f2 g& x
# 输
* @! S* @' h: x& o' M profit -= bet
7 L! V3 c- x. k' {! T6 _+ z( X/ C5 X stage += 1
+ B0 ^" ~3 \; t7 J# g if stage >= len(sequence):' k k! a1 }# i7 w6 T
stage = 0 # 断缆reset
& I+ @' @2 ]2 q; e2 _& s num_shoes -= 12 S9 @: M6 U/ V7 r1 R0 `
3 r6 K4 U7 ?2 q1 u3 }
return profit, commission_paid
4 d* f; i0 j6 Q1 y, f7 c; S( W& O' y4 S* a6 o/ u% a
# 设置命令行解析8 m" A+ G5 t: X) ^- X/ S
def main():2 D0 r l1 r5 [
parser = argparse.ArgumentParser(description="Simulate Baccarat strategy with commission on/off.")
7 D- o" }* f4 d: [2 ]. g* V parser.add_argument('--commission', choices=['on', 'off'], default='on', help="Enable or disable commission on banker wins.")( H- z3 S* N7 C
parser.add_argument('--shoes', type=int, default=1000, help="Number of shoes to simulate.")
: ?) ?2 D# D( q; g h( v$ g 5 O! I* h* l) z/ o/ @
args = parser.parse_args()
+ E$ m ?1 y) [6 g% ~ [ # c4 E" L/ a6 K1 O2 [8 H$ c c
# 抽水开关:开启或关闭
8 X/ q N2 N" {* ^. Q# @; u V commission_on = args.commission == 'on') |% I0 j9 m' d v( T
& Z" K, c( H+ L; U7 h5 F' _
result, commission = simulate_strategy_A(num_shoes=args.shoes, commission_on=commission_on)8 E* k# Y/ Z9 H- e6 K
print(f"最终盈利: {result:.2f}")2 G, Y9 Q& o5 B4 A1 \, k
print(f"累计抽水: {commission:.2f}")
" u9 @" e/ s5 J2 j
4 x( M9 J- W/ h3 M5 A+ c* e7 C; Lif __name__ == "__main__":, g' }# N7 }! z6 x: J# \
main()$ z" G0 e6 ^$ _8 h, r- ~
5 Z5 p: j2 ~$ |$ c1 o p: O `
J+ \2 F- D5 g* z步骤 2. 运行- G, @ P( N: N; g4 ]
) k( E7 r/ ?' I6 P' f; ?
在命令行里进入文件所在的文件夹,例如: z! Y* h. c1 x# b) @6 T
cd C:\Users\你的名字\Desktop( f5 e0 u: c; T3 `& E8 s7 k# y
python baccarat_sim.py
7 _: o+ E! b( m) z9 z
4 a6 `3 G9 ?' h& ~; L输出会显示:
) S% A2 s# ]8 @5 m0 y2 c" P* l4 e
累计盈亏: xxx
8 U$ p- i3 K2 ~4 }累计抽水: yyy7 G: ~2 A }+ K/ q! l+ Y
-------------------------------------9 L- v: M% c4 ?$ ]! `
实例:试跑3次,
) u. U' R1 b4 a. i9 nC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
! I. W! D: J: y# _: m最终盈利: -5360.35 0 ?- x7 P: v* M% O7 a/ j. q
累计抽水: 5176.35
9 p" p% s" w& I2 Z: |' ]/ yC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
! W& V9 b& S. n6 q& p, j最终盈利: -5661.65
% G* k o3 H! N8 A0 E( y累计抽水: 5174.65 0 o, X# T v. j. l- g" M6 O* h4 A
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
. B! p' i& V% Z. _3 h最终盈利: -4244.50 9 k$ P. G- a! q; M! r8 d3 a
累计抽水: 5176.50
' J* a/ |* z. u3 Z- E, d. G
7 E+ t- \" {+ z4 d# j6 n. s说明你的 Python 已经能正常跑模拟了。结果也很有参考性:
# S* x. t* V: D! i: j
x% T- j7 I) p* _ h K0 C! b1 W累计抽水固定在 ~5175 左右 → 这和你设置的「抽水开关 ON」一致,因为你每手下注金额相同(例如 8 单位),程序是按 Banker 抽 5% 计算的,所以长期下来,抽水会稳定在一个范围。1 }- G; r$ O: q0 x/ u
! ~0 d+ B( w" X' [& a最终盈利为负数(-5360、-5661、-4244)→ 这说明在 100,000 局的模拟中,哪怕加上和局不计,下注方向固定,数学期望依然是亏损。
: b; k. W& _+ x. c这条缆不能直接用,用了会输。必须改缆法,或改缆法并且改下注规则。' {% N) Q8 U2 ]3 D2 F
人们喜欢举例盈利,有吸引或牛逼的效果。。。用亏损的例子,可以真实告诉你,道阻且长不容易。$ i, c. c$ n& M+ s
但是别沮丧,办法总比困难多。只是,你自己悟的,是最好的。
0 g1 h. n) q" ~% D5 j' t5 `3 ^- D. W* F
启发,,,可以变更缆法,改变庄闲比例,指定胜负路。。。。(待续) |
|