|
|
楼主 |
发表于 2025-10-31 11:15
|
显示全部楼层
本帖最后由 Banker 于 2025-10-31 11:17 编辑 - W+ Z }9 ]5 t1 B9 ]
$ _, b" A! u9 b& {8 E可用Excel,逐手模拟过程(但 Excel 跑不了 100000 靴,会非常卡)。
: @8 M" n8 i3 l7 C; d# e eExcel 更适合 直观小样本测试,Python 才能跑大样本,Python 可以试试N万-1亿靴,10亿靴,有没有没必要?你高兴就好。
% F g' s* L9 C' G( D' P# }
6 j8 J, c I) l i在你电脑上运行 Python 模拟器 (版本3.0以上,若没有,在Python官网下载安装); B; f. H: G1 ^! T% T2 c
假设你已经安装了 Python 3.x(在命令行里输入 python --version 或 py --version 看看有没有)。
2 i* [0 U3 t( @2 l/ W先写一个最基础的 百家乐投注策略模拟器(自己定义的规则)。
& i9 x! ~/ a8 y+ @6 l h( X/ Q2 M) G( W2 u5 O+ y) G$ U
步骤 1. 新建一个 Python 文件 E8 g& @: H8 U+ k7 `/ ?+ I! @ l4 l
打开记事本(或 VSCode、Notepad++ 都行,我用记事本)
, u3 A/ f# }$ o3 c1 e) I% B把下面的代码复制进去。' q% m n0 W2 i& a# Y* q
保存成 baccarat_sim.py (注意后缀是 .py)。) M+ O4 j9 E D4 b: t
) S5 P8 P9 F) }6 {
import random
6 W" a1 j4 \6 P7 `: {6 E8 o/ ?/ Yimport argparse
* Z# i$ {8 o+ [* E' H) _) L5 d: Z6 u- `, P$ V# e- D0 n. C
# 初始化鞋子
. G3 o* e% b6 V6 b; Jdef init_shoe(decks=8):
6 E& ~# f4 J: |9 i. b/ C # 每副牌52张,8副共416张4 k9 A9 b; d) P1 ^+ D) Q
shoe = []
* z8 g" X1 _3 A+ N* \! | for _ in range(decks):( v; L" a0 B1 S. `! I1 @
shoe += ['P'] * 24 + ['B'] * 24 + ['T'] * 4 # 简化:庄24, 闲24, 和4+ {+ m" ^3 |' F# B" t
random.shuffle(shoe)
' u# H6 L: P4 Q% s- ~9 w+ C! X return shoe
- W* \8 \4 {* p% e+ S
' e, t {" S4 v/ c& x2 }# 发一手
# C- k% V5 g4 L4 d$ gdef deal_hand(shoe):" L2 y: b K6 R4 j
if len(shoe) < 6:
7 D1 P( M+ u2 b& [* A7 Y shoe[:] = init_shoe()7 U: ?% q2 _' _" `
return shoe.pop()
- A- S+ D4 o1 b" k1 l# z4 `2 P; ^+ U+ S' o) X q* i5 ]" I8 h/ T$ w3 W
# 模拟下注法 A4 A7 `1 z; S4 w1 A6 \6 D
def simulate_strategy_A(num_shoes=1000, commission_on=True):" g9 R% v6 `% ^+ u6 m9 L7 o1 ?
profit = 04 r k* d) ~' U3 W
commission_paid = 0
j" G L2 p; m% w5 I shoe = init_shoe(), S( N9 D9 N8 u& ~
9 C# S5 K0 r U( C8 a4 l # 策略参数
! X1 }5 [5 H7 d( t! l) E sequence = [1, 2, 3, 5, 8, 13, 21] # 示例进级/ Z# i1 t, w* P+ p* ~
stage = 0/ B7 A# o& u$ g2 c a1 _* O
target_side = "B" # 起手投注庄, m# a+ E l2 e: Z* v# W
w5 K8 g1 f9 K! J4 `, q! A while num_shoes > 0:
* G y# L, w2 b/ ~ result = deal_hand(shoe)
) J% F( s U, u& v) ~+ x
6 k0 q& H! J7 S0 |5 I; l: Q if result == 'T': ; a, x" c" G+ l1 |! N: P' ]/ f0 ^
# 遇到和,不输不赢,重投
% k% |# A m0 I2 P2 T0 L/ L2 }& Z" R continue
% L' V" g4 k+ y, G+ c8 \: v3 g! B' a! E5 k9 B2 f, x
bet = sequence[stage]& e; U2 U8 N! F- c9 U/ S c" j, |! z) C
: U& z+ p' }3 e( \ if result == target_side:4 h0 m+ |7 m( M
# 赢 O# O4 @4 T7 r9 j4 t9 ~
win_amount = bet4 x( s0 }( L6 }
if target_side == "B" and commission_on:
) g- D) r3 Q( o win_amount *= 0.95 # 庄赢扣5%抽水
2 h8 \. r) C m- w) V8 ] commission_paid += bet * 0.05. H8 P' s9 v; ~, l: i
profit += win_amount
! X/ K; X5 K6 |4 N5 C stage = 0 # reset: G6 P# I! k/ e
target_side = "B" if target_side == "B" else "B" # 固定庄(A策略固定)0 p/ d& m6 k+ E6 P" C! U2 H
else:
+ z* ~$ u7 X7 T" ] # 输
- y. d* c2 I7 b4 f+ t profit -= bet9 y2 W* [1 ?+ e6 ?
stage += 1
% m. m9 ~6 O' q" X if stage >= len(sequence):
% f( T' z1 y6 \; L" X$ v stage = 0 # 断缆reset
' }. u- ~+ Z6 _0 \0 ? num_shoes -= 1/ T8 m- R. T6 ~9 m) i0 p2 D& j
! F8 f# L1 G8 G3 c! E
return profit, commission_paid
! W9 S& h5 T3 N2 h2 M( j3 y3 e* H: I; h2 P
# 设置命令行解析8 m3 M% h! C1 J3 c. i
def main():
6 W9 c, @ W3 D' Z2 a! q: } parser = argparse.ArgumentParser(description="Simulate Baccarat strategy with commission on/off.")
. y# J4 R' p, l4 \2 L6 ]: I parser.add_argument('--commission', choices=['on', 'off'], default='on', help="Enable or disable commission on banker wins.")
) i3 w: d9 P! ^# `5 \1 r& [. ` parser.add_argument('--shoes', type=int, default=1000, help="Number of shoes to simulate.")
! t# b; b1 v5 `; o" B
6 H/ @; R9 S' Y args = parser.parse_args()4 C+ t: V4 X8 O! @
2 U1 `, J0 g( E( Y- N" F # 抽水开关:开启或关闭
0 q. l7 K* c" }4 u( l3 G; a1 N( i commission_on = args.commission == 'on'
2 k7 ?, X ^5 n / S$ o/ j T# K4 B* g3 C/ L
result, commission = simulate_strategy_A(num_shoes=args.shoes, commission_on=commission_on)
3 A g; q) ?+ i0 n# P print(f"最终盈利: {result:.2f}")( Y& u0 @7 h! y$ ~" v1 t6 r
print(f"累计抽水: {commission:.2f}")
: N- L2 o+ _- O' ~( M0 R! v' Y# l2 Z: J0 b# i
if __name__ == "__main__":
6 O! q+ j8 K; l main()2 y. I' w: k7 W: M& R# W
6 u+ p4 K }! v+ r2 e2 x9 u8 I
/ W7 J9 K! J4 D: x$ I4 w6 M
步骤 2. 运行
0 n4 y: a- I. t# b
2 c) m- C3 e6 W+ }在命令行里进入文件所在的文件夹,例如:
/ v! l! Y% Q) T* gcd C:\Users\你的名字\Desktop
" |3 j5 V2 i& }+ M" R O( S& Q; a% Cpython baccarat_sim.py
5 D/ ?1 R9 r& _' s
# c- ~4 c: X* N) Y' g& p输出会显示:
: G) W' i: u% s$ Y0 P# c3 M
" Q v; _: ]. g+ P) u累计盈亏: xxx
; ~/ O! v6 V0 Z5 U O3 }累计抽水: yyy- K# t' {# Y5 }1 y: w- O4 {
-------------------------------------# C9 {+ A0 ^- d
实例:试跑3次,
1 ?: w+ `: k' RC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
, P9 D) D9 i, T% k7 q最终盈利: -5360.35 ( q! T3 j8 d3 ?% d
累计抽水: 5176.35
3 z. F; y/ [3 e8 X' BC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
. U: w C8 q! L最终盈利: -5661.65 7 g3 g4 i6 ?$ F" C* ~
累计抽水: 5174.65 & P9 i! T6 i; n: b
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py ' F# S0 A: ^) s3 [4 B, |
最终盈利: -4244.50
! G% N7 ?/ E {4 [+ k2 Y累计抽水: 5176.50" N" {4 ^+ G1 L" o* X
' T$ M. p a! e) F9 }, m9 W0 J5 s说明你的 Python 已经能正常跑模拟了。结果也很有参考性:
8 }; B+ t7 u9 l! @" F" S7 E/ u8 l+ {' j% q4 Y3 `4 `6 H1 B! E3 {- d/ \! h4 Y
累计抽水固定在 ~5175 左右 → 这和你设置的「抽水开关 ON」一致,因为你每手下注金额相同(例如 8 单位),程序是按 Banker 抽 5% 计算的,所以长期下来,抽水会稳定在一个范围。
. S* {; u* |" \! [6 f8 ]
5 K2 n! g9 _5 {3 G9 q, `' Z& |最终盈利为负数(-5360、-5661、-4244)→ 这说明在 100,000 局的模拟中,哪怕加上和局不计,下注方向固定,数学期望依然是亏损。0 k G0 M& J; Q/ i) p* l0 {
这条缆不能直接用,用了会输。必须改缆法,或改缆法并且改下注规则。( g9 p0 @$ F' c3 {4 @* f
人们喜欢举例盈利,有吸引或牛逼的效果。。。用亏损的例子,可以真实告诉你,道阻且长不容易。
- p7 o! j; `3 `( q+ ], n但是别沮丧,办法总比困难多。只是,你自己悟的,是最好的。6 R" r4 p6 K, J1 L# W2 L4 k
" a$ x2 o+ E/ d4 }4 t) {9 q
启发,,,可以变更缆法,改变庄闲比例,指定胜负路。。。。(待续) |
|