|
|
楼主 |
发表于 2025-10-31 11:15
|
显示全部楼层
本帖最后由 Banker 于 2025-10-31 11:17 编辑 : r- x+ d2 n+ b, ?
& E: a5 n; B8 l; {+ C9 E
可用Excel,逐手模拟过程(但 Excel 跑不了 100000 靴,会非常卡)。
4 Q7 q) S- L V* s( o) W0 p& HExcel 更适合 直观小样本测试,Python 才能跑大样本,Python 可以试试N万-1亿靴,10亿靴,有没有没必要?你高兴就好。
7 s; r5 {7 B' G0 i
7 ]* S1 H" D! \+ b在你电脑上运行 Python 模拟器 (版本3.0以上,若没有,在Python官网下载安装)$ |% f0 W! m- P) F6 r. k
假设你已经安装了 Python 3.x(在命令行里输入 python --version 或 py --version 看看有没有)。9 ~ O2 Q5 m# e& R* B
先写一个最基础的 百家乐投注策略模拟器(自己定义的规则)。
+ Q( N+ k" g2 J2 ?
% T* A) d2 E" O2 T* y- e1 k步骤 1. 新建一个 Python 文件: u1 C3 ^3 ]3 r
打开记事本(或 VSCode、Notepad++ 都行,我用记事本)
0 `8 t N0 T) Z: |1 k7 P把下面的代码复制进去。
+ E/ _6 e7 n+ y: h8 ]' l保存成 baccarat_sim.py (注意后缀是 .py)。# N, M. S1 L4 J
U- S6 \: G) _; a
import random1 c' S+ w2 j7 S3 O2 [9 O+ K' {* }
import argparse
. Q4 ]+ a* I+ ]; ?+ z+ T4 f) F3 z( f
# 初始化鞋子
& s$ ? s% D+ l& B' wdef init_shoe(decks=8):
3 J& U/ }: H- E* r # 每副牌52张,8副共416张
1 J3 V9 l$ ~1 d* x$ \( o# J shoe = []
" v) `! y4 k9 s j4 e3 u. P2 Q for _ in range(decks): E$ \+ r6 u7 @) C; \
shoe += ['P'] * 24 + ['B'] * 24 + ['T'] * 4 # 简化:庄24, 闲24, 和4* x% j' y& c/ ~5 E8 f
random.shuffle(shoe)
2 b* K9 C6 P# H u/ g2 l; z3 C return shoe" z1 C* ?' V. n7 }, Q9 W- ?# ^
' R: ^ d: a1 n. q# 发一手
1 x1 L [# N; h& ~9 B) @7 R# |def deal_hand(shoe):
; ], a: C$ q3 K8 M5 q if len(shoe) < 6:
/ f/ B# [. c6 }/ w shoe[:] = init_shoe()& ~; W1 V& G6 Y3 x
return shoe.pop()
( n4 F( S, p9 B7 R2 N1 T
* H1 T9 b" V6 W; @& o# 模拟下注法 A. \1 N5 Y- x' l% B" T! o) R9 n/ _
def simulate_strategy_A(num_shoes=1000, commission_on=True):5 H- Q4 e8 {2 a7 ~3 d: u
profit = 0
7 O3 s' T+ d6 W& i9 R6 J" S commission_paid = 0/ q! a8 v d: U0 v- G: J
shoe = init_shoe()9 b+ R& t3 _: @1 y0 \
6 }: q( f: Z- }4 M # 策略参数) M( |7 a& B$ k7 N5 @' v& Z
sequence = [1, 2, 3, 5, 8, 13, 21] # 示例进级1 `: R. w; b2 Q* ?! G" u# @
stage = 0
3 J# D4 }% ~( A' m target_side = "B" # 起手投注庄
& C, Q5 L8 U4 T$ @/ k% b1 w1 m
8 e E, K: ?3 G: u* y7 l+ P while num_shoes > 0:" y7 D5 T8 F, R9 ^9 `3 a
result = deal_hand(shoe)2 l9 w; A2 M/ ~. c" B3 C6 s
' z7 h6 Q8 R5 a( D: M' t) F" p
if result == 'T': 8 B5 C+ X \9 c
# 遇到和,不输不赢,重投0 h+ }+ F, t5 @0 T$ ^
continue
4 l7 R0 k) E# Q0 Y- C
2 T- Z' {* o" O4 I- V c bet = sequence[stage]) O/ a4 N6 G x0 n9 n4 D, i( K
' r" B9 D, x5 g; W3 }7 u
if result == target_side:
! W- C! K( _- F% D x1 i( u # 赢 ?- w4 N3 l! d2 ~
win_amount = bet
8 j$ D' ]3 G1 V- ]$ j if target_side == "B" and commission_on:0 Z0 P: o; p* t8 x5 I# u9 A+ ]
win_amount *= 0.95 # 庄赢扣5%抽水
& q& b0 x \8 N) T( f6 T% o5 p4 B commission_paid += bet * 0.05, X& q/ n6 H* o6 l6 L) u
profit += win_amount2 O; V" c6 c. i# ?# [
stage = 0 # reset0 k; o, O$ x3 e: m$ `
target_side = "B" if target_side == "B" else "B" # 固定庄(A策略固定)1 l2 E1 r a: M9 x2 V3 M9 P
else:" A2 S# b. m; g& S; b( |* [$ k
# 输
: J" W# z7 n C profit -= bet
3 ]4 p9 E* I( o0 N' V0 ~; E5 t stage += 17 n9 F" L1 k$ l. `* h" N
if stage >= len(sequence):$ x9 f4 t6 M q6 ], {
stage = 0 # 断缆reset& b9 B1 b t; i4 R6 f. P
num_shoes -= 1
1 D3 V8 @9 A/ m- }9 c: }& A9 [3 R) K- m
return profit, commission_paid, N) [# k5 Y& x: i- r3 O8 W4 h
* N9 I1 ~; M7 n( O: i# 设置命令行解析
2 F6 Z6 ^6 c5 b$ K ^9 x3 {: ?def main():* B/ {# u g, f
parser = argparse.ArgumentParser(description="Simulate Baccarat strategy with commission on/off.")
: k# V* \" g; E4 m2 {/ |3 ^ parser.add_argument('--commission', choices=['on', 'off'], default='on', help="Enable or disable commission on banker wins.")' m% a! p$ l7 }4 P5 y
parser.add_argument('--shoes', type=int, default=1000, help="Number of shoes to simulate.")5 \) U+ w' ]) i0 u
]+ [' z& a/ z0 S) C0 W2 V9 m" c args = parser.parse_args()$ |6 i" }* z0 {1 t; Z' ~
" g" O1 [. m, O1 K( v6 c
# 抽水开关:开启或关闭
^* z4 x7 z$ i S) s e3 B7 s' L commission_on = args.commission == 'on'6 d# m( y2 s+ ?$ F7 H, x) k2 R
* v7 R. R! d* `3 h( Z l8 p- o$ Q
result, commission = simulate_strategy_A(num_shoes=args.shoes, commission_on=commission_on)
1 j1 O4 r# P9 R& x( ^ print(f"最终盈利: {result:.2f}")
7 [$ g! Q; s# z- O! ?/ ~6 W print(f"累计抽水: {commission:.2f}")
; h9 | s1 G2 n/ t
; d& h& ~9 l/ N( ]6 \0 `if __name__ == "__main__":
8 X: f4 v1 r& R5 B+ d N0 m main()" y1 R( ^! ~* Z) c9 {3 |
8 [5 m/ M5 U+ x9 J5 Z i
3 ]/ C4 w: T& ~9 i- Y- T; ]9 s步骤 2. 运行4 t- d% d, b6 o6 Q. k
+ b& ?/ b# ~) @' a6 q3 M
在命令行里进入文件所在的文件夹,例如:9 N9 e4 T8 X8 F/ W4 w6 Y2 J
cd C:\Users\你的名字\Desktop( F- b1 {, w) g0 B( G) V+ {
python baccarat_sim.py
( F7 d7 c4 V6 w1 y: Q: [: l+ |% W/ z9 u2 V, B& s3 D' K/ I
输出会显示:1 f- B* I# P7 t# ~$ x9 ~! |
3 ~8 d' h4 { `" n6 P: R8 @+ a# f
累计盈亏: xxx! i- i# d; }5 {1 A0 D
累计抽水: yyy
# \$ }$ h5 y/ X2 ^1 l-------------------------------------
. y8 w5 J2 V7 N/ J4 |7 L; v2 C实例:试跑3次, # T0 b$ j3 t( {, K
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py 6 [: G1 `7 \* z" t8 X- x
最终盈利: -5360.35
- I- P6 S. i$ u4 F$ ]2 z0 U累计抽水: 5176.35
2 f0 }% T4 b5 c e6 r/ p$ n8 aC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
3 d+ f3 N* U. Q8 b& G k g% G* `最终盈利: -5661.65
+ g6 w+ ~1 o. K6 y2 i, z) G累计抽水: 5174.65
! d6 e5 k+ l* \5 T8 R5 d. w8 iC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
) S- w2 H Q! D2 Y, }+ [6 h! Y* |* w最终盈利: -4244.50
, V% `7 ~& p3 f8 f( N2 u累计抽水: 5176.50
4 R' n2 e$ e3 U G
- T8 a( A) f9 M# T说明你的 Python 已经能正常跑模拟了。结果也很有参考性:9 F' p3 r4 ?4 L) ^& A+ t
3 n" Q5 r+ u0 H累计抽水固定在 ~5175 左右 → 这和你设置的「抽水开关 ON」一致,因为你每手下注金额相同(例如 8 单位),程序是按 Banker 抽 5% 计算的,所以长期下来,抽水会稳定在一个范围。
" c' b4 T1 ~, [7 A7 g- k9 x0 m2 U+ e, W- ^+ f. K' q6 W
最终盈利为负数(-5360、-5661、-4244)→ 这说明在 100,000 局的模拟中,哪怕加上和局不计,下注方向固定,数学期望依然是亏损。
: T6 c F/ U: ]& R( }这条缆不能直接用,用了会输。必须改缆法,或改缆法并且改下注规则。$ x& K4 j, |( Y
人们喜欢举例盈利,有吸引或牛逼的效果。。。用亏损的例子,可以真实告诉你,道阻且长不容易。
# v% F: J6 i2 b7 Y; d: b# w/ ^但是别沮丧,办法总比困难多。只是,你自己悟的,是最好的。6 \8 R( p) U) O* w
* _8 H% O+ l- P* u! |启发,,,可以变更缆法,改变庄闲比例,指定胜负路。。。。(待续) |
|