|
|
楼主 |
发表于 2025-10-31 11:15
|
显示全部楼层
本帖最后由 Banker 于 2025-10-31 11:17 编辑
8 p5 c: }% U& X
: N5 k' C3 E5 F7 g! p2 f可用Excel,逐手模拟过程(但 Excel 跑不了 100000 靴,会非常卡)。
" F+ o7 Q9 v+ z+ ]) i3 e8 H+ aExcel 更适合 直观小样本测试,Python 才能跑大样本,Python 可以试试N万-1亿靴,10亿靴,有没有没必要?你高兴就好。
0 Q! j3 ?7 P9 _
9 S! @3 x6 @- @' G7 A在你电脑上运行 Python 模拟器 (版本3.0以上,若没有,在Python官网下载安装)& L# ]; V! L* l/ ]9 I
假设你已经安装了 Python 3.x(在命令行里输入 python --version 或 py --version 看看有没有)。
1 a6 q0 M9 f# ]5 M先写一个最基础的 百家乐投注策略模拟器(自己定义的规则)。
* L/ I, N4 `! T" ?/ V9 S0 `0 i7 z3 S( }6 n2 p, B
步骤 1. 新建一个 Python 文件, l2 m8 V6 |% ]
打开记事本(或 VSCode、Notepad++ 都行,我用记事本)1 k4 x) r. P1 z3 B
把下面的代码复制进去。: K+ R/ `( C% x* `5 Z
保存成 baccarat_sim.py (注意后缀是 .py)。
: P9 m1 A3 N# a8 B' r& M" J3 Q J
1 g& K& _, W% D0 ]import random
3 V4 B. c0 H5 I+ P( H0 b7 W- limport argparse5 D" k6 Q% a& L2 L" P0 ^* r3 V0 c
8 d% A/ K/ @2 u |: c# U1 @, c. Z# 初始化鞋子1 F: c/ Y2 ? g
def init_shoe(decks=8):
# a& o. E1 \9 _ # 每副牌52张,8副共416张% e, e# u2 \( U Y. w
shoe = []0 N8 u& i0 k5 w/ b; g2 _
for _ in range(decks):: j/ U8 `; v. ^5 ^
shoe += ['P'] * 24 + ['B'] * 24 + ['T'] * 4 # 简化:庄24, 闲24, 和44 D% c( k$ K. t6 A2 b
random.shuffle(shoe)
& w' l( ?: p1 q3 x; ~ return shoe! U. x8 ?* {) Y2 |1 w1 m9 B5 f
]- q5 l9 n1 k+ k7 V, C
# 发一手
( z4 x4 s; I) A7 C% v' gdef deal_hand(shoe):8 Y) y" w+ g7 |7 \ `
if len(shoe) < 6:8 r! Z$ ~. e" y
shoe[:] = init_shoe()1 E) W" D" r, T+ |' m
return shoe.pop()
, P1 H' a3 i3 B: U
7 K2 ^$ k7 D/ ]7 @0 ^' q6 O! {# 模拟下注法 A, {' M' u- s5 ^' n- w/ K" v
def simulate_strategy_A(num_shoes=1000, commission_on=True):# d# c& j8 `5 w: R& N4 V$ U
profit = 04 X2 g% o* i M- v( q0 L7 Q% w
commission_paid = 07 G+ b1 ?5 B2 P5 L. R" `# K
shoe = init_shoe()# p2 a5 q& u; |; i5 f8 W6 R; J
6 j9 E+ L1 D; o( h* B: C9 ?, | # 策略参数
( U) H$ [3 ~4 [ X R sequence = [1, 2, 3, 5, 8, 13, 21] # 示例进级5 d; G! V0 w* w1 g
stage = 0& ~ J. i! \. f: n/ R( B# O5 v) r
target_side = "B" # 起手投注庄0 I; `; u; F# d N* t- C
& @ O0 J' i; l3 J$ X" _8 p while num_shoes > 0:
- l* Z' s# ?$ B; a' K3 q result = deal_hand(shoe)9 s$ T" f4 ^9 K6 o* {* v
4 N8 O; W4 @% v* ]" P; R: o if result == 'T': 8 v& M( i$ ]/ i9 o8 U! h
# 遇到和,不输不赢,重投9 l) v! @4 v5 x+ P9 I* D6 y
continue) s( i. i* s* @/ c+ K: f0 u
. A4 ^, I: ]" e! d1 c5 v8 i bet = sequence[stage]* D+ Q) g' J! g, j
! n2 i0 B4 J- |, W i6 @: G H$ `
if result == target_side:
1 E3 r( h6 [ i% } # 赢
+ n/ v$ X/ r1 a win_amount = bet
9 ~) v! U! e) U* v if target_side == "B" and commission_on:
3 [9 @( g8 P" C) n$ J win_amount *= 0.95 # 庄赢扣5%抽水 P0 x) i! I$ p* N% F
commission_paid += bet * 0.05
" ~+ [- A' B! V: S# \! v profit += win_amount! @ @- Y: u* T9 R
stage = 0 # reset
7 X% \; h1 H" M0 V target_side = "B" if target_side == "B" else "B" # 固定庄(A策略固定)
9 s5 H8 @9 ~8 h else:
( ~' T% |) e6 x1 y& e" Q% O # 输
% N6 Q9 k& _1 _. q0 s& B profit -= bet. ?% p* H9 j3 W' r. N: j
stage += 1
8 L5 _ ~$ |4 _. l% }2 w if stage >= len(sequence):
: j1 H8 y5 S4 X5 \5 {4 H' ] stage = 0 # 断缆reset& ~# \# E3 a' p0 a+ H: b
num_shoes -= 1
4 c. s m& f; U5 Z) v
- R; ]1 e" C% N Z9 V( c2 H return profit, commission_paid, @( `6 V$ }8 C8 W
0 }7 _' [" a. V5 V) X O5 h0 H
# 设置命令行解析4 d0 F, z% h) h& O. }& k3 N5 D$ X ]' t
def main():. m3 s7 J3 v8 l4 s$ X6 C; H; j
parser = argparse.ArgumentParser(description="Simulate Baccarat strategy with commission on/off."), _. H8 L9 y. `2 u& m% ~0 c' t) G5 I
parser.add_argument('--commission', choices=['on', 'off'], default='on', help="Enable or disable commission on banker wins.")
; _$ J, [9 i( E parser.add_argument('--shoes', type=int, default=1000, help="Number of shoes to simulate.")$ [) P$ g8 `9 T5 i/ l- ~, P/ Z$ W
- X) U9 v. l+ {+ a& Y args = parser.parse_args()* B% d5 R1 x: ^+ ^% V
7 d, I( u3 x4 @" g; h5 T' j
# 抽水开关:开启或关闭" `2 C% z% G# M5 M0 b2 f
commission_on = args.commission == 'on'( ^$ P: c+ I! {5 B& }2 I
$ J0 M- p, k, z0 ~9 Z result, commission = simulate_strategy_A(num_shoes=args.shoes, commission_on=commission_on)' {( l8 _. v4 O2 c; h. v
print(f"最终盈利: {result:.2f}")
* K% m) \- k- Z4 h4 W print(f"累计抽水: {commission:.2f}")0 `5 h( m1 v2 ?) }
* z2 u3 i1 X/ [( F
if __name__ == "__main__":
8 W$ ~$ l7 ]( ~7 J/ g main()* o2 I+ m# e( Z
. T ?3 p) f+ r% t- o# L- m( [6 T
, B& M) `1 |$ y2 ]0 \; ]2 T0 z, i6 T
步骤 2. 运行
- }" A; M) h# `8 ], [! A
. M( C2 J: d9 i" J2 ]: l% ^在命令行里进入文件所在的文件夹,例如:7 u) u; h9 P4 E" W) n
cd C:\Users\你的名字\Desktop1 d9 _6 V/ ~) z4 e2 j
python baccarat_sim.py
9 E" I: D5 [4 A, c
( c$ s6 p1 F/ \% a- `输出会显示:
& ]+ ?5 M# Z9 j6 Y# S4 h2 W2 ~6 T7 `1 a* a o) E
累计盈亏: xxx9 O3 m' ~6 _0 C% ?7 X( [* f
累计抽水: yyy
9 C8 p3 X) \( S# Z-------------------------------------+ p7 }! H3 O: y0 ^$ }
实例:试跑3次, 5 s U6 ?' o& l
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py - F% E& P, l& E1 j, c; d5 f/ B
最终盈利: -5360.35 # d, m7 t7 y* \5 o! X
累计抽水: 5176.35
9 j2 \( B: s5 d" w) QC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
; ^* W5 w, f( m" e" Z最终盈利: -5661.65
. B2 e& T! F) w: j# {9 C累计抽水: 5174.65
2 Z. j# t2 ^) K* z& ^C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
0 i6 p1 Y, x6 S$ X8 y0 V最终盈利: -4244.50 ! f9 c# k; o1 b% P
累计抽水: 5176.50
% Y7 s# F* e/ w$ G2 t/ F+ _$ J
. B, C2 E7 P9 P( t: g说明你的 Python 已经能正常跑模拟了。结果也很有参考性:
/ F; z$ t2 y3 C1 { @5 h
% |6 \3 W/ t; {) I9 p- w( ?累计抽水固定在 ~5175 左右 → 这和你设置的「抽水开关 ON」一致,因为你每手下注金额相同(例如 8 单位),程序是按 Banker 抽 5% 计算的,所以长期下来,抽水会稳定在一个范围。
$ y8 u, U9 ?- B% W: \) u' V. E% L. [2 ?" `# K! U' _0 C0 N2 h
最终盈利为负数(-5360、-5661、-4244)→ 这说明在 100,000 局的模拟中,哪怕加上和局不计,下注方向固定,数学期望依然是亏损。5 }' t# P% K) e" J* X& M+ `5 v1 @
这条缆不能直接用,用了会输。必须改缆法,或改缆法并且改下注规则。
+ w9 j3 t5 @# E: x* W; D* r人们喜欢举例盈利,有吸引或牛逼的效果。。。用亏损的例子,可以真实告诉你,道阻且长不容易。
) ?3 V3 p! J/ h& f! R. C) M但是别沮丧,办法总比困难多。只是,你自己悟的,是最好的。
# U; S: W: I" z7 z9 N1 j; P1 m5 x. x. \7 P8 H2 X9 H9 ~
启发,,,可以变更缆法,改变庄闲比例,指定胜负路。。。。(待续) |
|