|
|
楼主 |
发表于 2025-10-31 11:15
|
显示全部楼层
本帖最后由 Banker 于 2025-10-31 11:17 编辑 4 t/ Y% \$ O# U4 s, h5 Q! A4 o6 C& R
1 A% u% _9 Y6 z9 ?
可用Excel,逐手模拟过程(但 Excel 跑不了 100000 靴,会非常卡)。
( i9 B1 J+ w8 V* l& ]- D1 ?Excel 更适合 直观小样本测试,Python 才能跑大样本,Python 可以试试N万-1亿靴,10亿靴,有没有没必要?你高兴就好。
3 S9 ^& j( G. A. ]2 E, ]1 F
. s4 t9 i0 Q) ^% S: y, e2 d) U; z在你电脑上运行 Python 模拟器 (版本3.0以上,若没有,在Python官网下载安装)
/ v8 H/ }; f, B) u" J( k假设你已经安装了 Python 3.x(在命令行里输入 python --version 或 py --version 看看有没有)。5 s% N: h" p8 O0 p7 O! `1 b' I2 i8 M c
先写一个最基础的 百家乐投注策略模拟器(自己定义的规则)。
# f' a! M) V/ K* _. e" X: a
: J; ]( d! i f% N( }步骤 1. 新建一个 Python 文件
$ f# A$ |; }: `2 w9 }' d( R- o打开记事本(或 VSCode、Notepad++ 都行,我用记事本)
( ]0 h4 P1 M9 W$ @5 O0 `把下面的代码复制进去。
0 [/ `5 p% @2 ^保存成 baccarat_sim.py (注意后缀是 .py)。2 _- d2 `" \+ c/ w% Q9 y2 T) J+ K
. [1 N0 K Q, L, v* bimport random
: p1 o, |$ I: l- y, Q" Fimport argparse* z) q L- |) p! Q) O: W
# s/ W( Y; P* } m* ]# 初始化鞋子
. O$ l# r4 c# H) `+ u j1 S! h7 Zdef init_shoe(decks=8):) M, } h. V4 d. I* ?2 T. V# a
# 每副牌52张,8副共416张
5 m* |/ d; z, `! p shoe = []- Y/ C* g2 `9 K, V* ^
for _ in range(decks):! \. M3 `8 F8 s# d6 p% m
shoe += ['P'] * 24 + ['B'] * 24 + ['T'] * 4 # 简化:庄24, 闲24, 和4, C' D( _ ?+ Y% y
random.shuffle(shoe)( ]& h4 ]/ z7 I% y( `- x0 b8 I
return shoe5 [) {& Q! q% z; d! z. u2 Z/ n
) l- D. K: R: W) p+ v Q
# 发一手
! |0 }8 f9 f! v4 t) zdef deal_hand(shoe):, V& l& b* H0 ~& G+ K
if len(shoe) < 6:5 N$ S& h U) J0 [) u- O
shoe[:] = init_shoe(), e) i* |7 L) A& |. P) b* t: B
return shoe.pop()3 T- u- D, w3 ]
/ G5 S- D# |* I$ \2 g
# 模拟下注法 A
) s4 _- S/ l$ i1 i5 kdef simulate_strategy_A(num_shoes=1000, commission_on=True):( q" T. \4 a6 \3 Y+ l: E
profit = 0 [% o. G, d# X5 p, u: b7 V( }; x
commission_paid = 0
2 ]: B1 ?8 t4 ?$ q shoe = init_shoe()! t& S" ~% ^5 ]* S8 z- }
1 E9 y5 F: n. ^1 q* X: |; W # 策略参数
0 }0 J6 w4 |9 a/ ?6 u sequence = [1, 2, 3, 5, 8, 13, 21] # 示例进级
, Z1 b6 [" Y. [, u stage = 0
l W! J- L+ Z- g target_side = "B" # 起手投注庄
6 R4 s1 \( g+ P z' m \8 V5 ?) Q3 l/ C. l! _, O$ u
while num_shoes > 0:7 l8 _: z! ]$ ]# `8 U* g9 k
result = deal_hand(shoe)
$ T' k, Q7 F# W1 U7 k0 V; P
6 r5 o! x+ k: H5 @8 R; r if result == 'T': & D7 n4 \/ Y- S/ l1 ^
# 遇到和,不输不赢,重投
! r+ c! E7 H2 u continue
) \+ O Q7 t5 T% a! W
* S- n; F' U( ]* X0 f4 }* @0 }- B bet = sequence[stage]
9 i8 G) k% s/ ] - N( w ]/ p4 K) s6 J3 k$ i) |
if result == target_side:
# i) g8 p5 I3 z7 P # 赢
: z+ |6 Z* h+ v# H8 C' v7 C- E win_amount = bet
0 V* T6 _, `0 u" ` h5 l5 Q if target_side == "B" and commission_on:, ?% a! ]2 C& V/ ^# g
win_amount *= 0.95 # 庄赢扣5%抽水! z `' q2 P0 l8 W
commission_paid += bet * 0.05+ K1 }2 ^- f, C& ~6 v
profit += win_amount
. T4 C4 G1 s* e2 b stage = 0 # reset
0 N( E* z6 r7 @2 Y* o, G' ~# p target_side = "B" if target_side == "B" else "B" # 固定庄(A策略固定)
( N+ X/ Z* D9 O l! e# }* A9 Z else:* j, O4 q, i/ H! P4 |; T
# 输
& F2 P$ H* H9 R# m+ n: L profit -= bet: |/ V. q5 _' W
stage += 1" t& K0 I# [3 ?% R. ~
if stage >= len(sequence): I& p4 P; o4 S+ ]* i" Z
stage = 0 # 断缆reset
1 Q0 f+ o7 v5 u num_shoes -= 18 ~# }, A: j& Q( R4 T
& U# @, l0 @; r+ g0 n9 F+ s( d
return profit, commission_paid- m0 q: {5 m9 v! r) [
" P) c0 `3 P$ c E) D; L# 设置命令行解析, c; S! g% ?' s% m; c
def main():
@' X! a; \ l& m parser = argparse.ArgumentParser(description="Simulate Baccarat strategy with commission on/off.")
% ~! E# x( K7 I1 W+ s; x parser.add_argument('--commission', choices=['on', 'off'], default='on', help="Enable or disable commission on banker wins.")4 d4 k* k' A$ {# M6 R' t/ k3 x
parser.add_argument('--shoes', type=int, default=1000, help="Number of shoes to simulate.")
8 j$ g. ` h6 t 5 j) Q! z' k4 y4 p5 M
args = parser.parse_args()$ Q, r; S4 J1 i) b* x
. @. \4 N: e. j+ Q: u # 抽水开关:开启或关闭
, q) s7 m7 j' }% i commission_on = args.commission == 'on'
8 a u8 ^, b# I1 p( L0 L1 v1 w) ^
1 ]4 w) x! y+ k& x* ~ result, commission = simulate_strategy_A(num_shoes=args.shoes, commission_on=commission_on)8 R% T4 W# [9 X r" P# O0 K( f
print(f"最终盈利: {result:.2f}")7 j7 y* b5 D) J
print(f"累计抽水: {commission:.2f}")
* q9 B* L: L9 i; D! Y3 r+ R- t% f- V' A
if __name__ == "__main__":
' W+ r b$ V. h$ D# P% ?7 `8 S main()$ s$ u3 m( m' _
9 B9 e! }0 r" s& D4 J* c6 ~
) I4 T- z: E/ p4 R+ n" X# E步骤 2. 运行
, h% ^! _3 K- A9 E, ~3 I, |3 g* v( d7 n v" ~
在命令行里进入文件所在的文件夹,例如:5 u) W7 t7 x9 @: w( E) t
cd C:\Users\你的名字\Desktop8 e+ F3 O9 c$ E1 e O8 F9 ?. p& z
python baccarat_sim.py9 A+ k/ w9 J0 `# x! q/ t
. }, q8 D8 m& R- |4 ]
输出会显示:
3 h# ~9 Y) Q6 w8 ~8 J3 f
. z3 g! c- z+ Z" T0 E) \ g n累计盈亏: xxx
7 b* X. a2 w# ?( X3 ~, c0 N$ ~累计抽水: yyy, Z' D$ `% X$ Z4 R7 Y j( Y; L, E& W- p
-------------------------------------9 S1 o; B* h( |' N( \4 [! F
实例:试跑3次, 5 ^( b$ A- u* S& h3 i9 p
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py & V2 L7 q3 r. B
最终盈利: -5360.35 1 L+ S; e: ~8 N6 ~
累计抽水: 5176.35
/ K; s$ K$ B9 d0 ?C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py 2 H" D8 N8 f4 M: s1 t& @6 \
最终盈利: -5661.65 * _6 x3 p" O7 v% `
累计抽水: 5174.65 8 Q( k0 m/ P& S
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
; I4 @% e4 E1 Z7 |6 W; s3 Y4 E" L最终盈利: -4244.50 ( }* p( I2 _0 E @; D( b
累计抽水: 5176.503 r2 o5 e: Y, M
- O: T1 K8 C* [$ ^
说明你的 Python 已经能正常跑模拟了。结果也很有参考性:
" v7 _3 x0 l7 v# Q" J: o4 ]% D
( k0 n; I3 j7 P. k6 N累计抽水固定在 ~5175 左右 → 这和你设置的「抽水开关 ON」一致,因为你每手下注金额相同(例如 8 单位),程序是按 Banker 抽 5% 计算的,所以长期下来,抽水会稳定在一个范围。6 V% ^. v9 @4 P: z
7 H8 Z6 a8 `4 [4 R最终盈利为负数(-5360、-5661、-4244)→ 这说明在 100,000 局的模拟中,哪怕加上和局不计,下注方向固定,数学期望依然是亏损。
' f1 l3 {. N! z4 L( E% [ h% `这条缆不能直接用,用了会输。必须改缆法,或改缆法并且改下注规则。
& r! p" E4 I* L' G+ R人们喜欢举例盈利,有吸引或牛逼的效果。。。用亏损的例子,可以真实告诉你,道阻且长不容易。' T: N4 F. J* G: ~0 [
但是别沮丧,办法总比困难多。只是,你自己悟的,是最好的。. M/ h! B$ ~" e
$ u& ?& ~) J) ^, e# j: r( R
启发,,,可以变更缆法,改变庄闲比例,指定胜负路。。。。(待续) |
|