|
|
楼主 |
发表于 2025-10-31 11:15
|
显示全部楼层
本帖最后由 Banker 于 2025-10-31 11:17 编辑 8 Q8 y! Y. E7 V3 m5 \+ U% b( G* l
9 r# t2 n' p V W, O6 b0 e
可用Excel,逐手模拟过程(但 Excel 跑不了 100000 靴,会非常卡)。) N+ ~( A! V( }
Excel 更适合 直观小样本测试,Python 才能跑大样本,Python 可以试试N万-1亿靴,10亿靴,有没有没必要?你高兴就好。: ~8 _4 y& h0 D- _# m+ ?, A
e: }3 x/ v# Y0 I+ G在你电脑上运行 Python 模拟器 (版本3.0以上,若没有,在Python官网下载安装)
" r& U/ e' V+ u$ y w/ p假设你已经安装了 Python 3.x(在命令行里输入 python --version 或 py --version 看看有没有)。
3 W0 @ e# l" K" L0 z7 [% o6 N- [/ P先写一个最基础的 百家乐投注策略模拟器(自己定义的规则)。
0 Q# L6 `, ^7 Q5 N( S# O6 }5 C2 H G8 E- m8 i- T
步骤 1. 新建一个 Python 文件
( `- H2 R9 i# [( q9 u* a( u打开记事本(或 VSCode、Notepad++ 都行,我用记事本)4 D' d! ^! m; D* j' H5 ? A9 W
把下面的代码复制进去。
6 V( E2 q: {" n- n保存成 baccarat_sim.py (注意后缀是 .py)。' p U* C' \2 q' Q) ?# O
6 P& J. O* @6 `' Ximport random/ _2 I0 O! r5 c
import argparse; i+ v, k) o. I( m, h6 z, l
2 Y7 Q9 @% e% Y# 初始化鞋子- F6 I, A6 [* J+ r. j. K* I2 ]) h `' O
def init_shoe(decks=8):! Q% ~: W( D% h* o: V7 _, p
# 每副牌52张,8副共416张3 k+ c* z) F7 j( f! I* F
shoe = []
% z9 P- R; Q/ J' \ for _ in range(decks):7 l. a3 G2 r% ?" H/ w
shoe += ['P'] * 24 + ['B'] * 24 + ['T'] * 4 # 简化:庄24, 闲24, 和42 R7 `' J1 S' E' H6 R
random.shuffle(shoe)
. K/ z- o! P1 Q" Q( {& ~4 @8 S return shoe
) F c- \2 n, g6 ~9 Y2 L) ^8 Q- k. I" p+ m0 q
# 发一手
4 j+ o" w+ f6 p- D7 {8 s4 h! R2 T4 Fdef deal_hand(shoe):+ J3 ]0 _2 o ^& H
if len(shoe) < 6:1 A/ k3 K3 d+ R: c- B( x1 Z0 Y
shoe[:] = init_shoe()
( E. w8 Y' T5 Z$ x& j) V return shoe.pop(): b2 ?# Q& ~" a0 s1 X5 g
) o q& A9 g {2 y, f# 模拟下注法 A
5 M c6 }0 }9 Z- N" [def simulate_strategy_A(num_shoes=1000, commission_on=True):
: C/ j( D- c% M0 N% f$ O$ q5 D profit = 09 G, ~' a4 l0 G9 O3 l3 o* z
commission_paid = 07 D: |$ j) i8 t; w
shoe = init_shoe()' q9 H" i- ^% G" ^+ E5 L1 g. Z5 W
1 R- `# V! c9 ?: n- k # 策略参数9 G8 I! i( R0 U; p) S- Q
sequence = [1, 2, 3, 5, 8, 13, 21] # 示例进级6 `! J# m; F4 y% D
stage = 0
( ?+ y/ X& m+ d1 Q" ~$ ^. M1 [3 q) P target_side = "B" # 起手投注庄& g |* e8 K+ S- P
4 [1 _ J8 X& C( K5 o
while num_shoes > 0:7 ^! ~2 p; r$ u' I
result = deal_hand(shoe)
2 t! L# i, U( r& A4 }1 t
" \5 O% D& W: ?& l# M* K ^8 r if result == 'T': $ b3 D) K$ g7 k' G: X& Q U% b+ k
# 遇到和,不输不赢,重投, a, E; h7 X D: q1 B
continue! u; ~+ e7 W z2 P
/ s1 e+ @6 w: m bet = sequence[stage]. o& J: H0 b8 q+ O
4 H1 o) X; F0 e( y! @2 ]2 ?- H if result == target_side:/ i. a& G+ v+ ^3 c1 T
# 赢
, H4 R% {% N% _" |- E9 `# v win_amount = bet1 g: X+ O, C t6 C! j
if target_side == "B" and commission_on:+ F" F, L' j# c6 I! }
win_amount *= 0.95 # 庄赢扣5%抽水# Z) u0 x9 [; T: _ x( K: y2 l
commission_paid += bet * 0.050 p' z7 C% Y5 y- m. ~
profit += win_amount
7 [3 V4 c5 u% \6 \8 m' y stage = 0 # reset
+ Q/ H9 \) |8 ]% y7 {0 \# Y* o target_side = "B" if target_side == "B" else "B" # 固定庄(A策略固定)
$ U" O( d, b W3 S7 l, h+ c4 n7 p, Y9 K else:; @& M e: z6 p8 D3 |$ ^
# 输
% o* t* _ E% q6 R( z3 ^ profit -= bet
) `* K! B% O2 p0 [ stage += 1. s! B1 A/ s# `# r
if stage >= len(sequence):
% D' y: E5 j% _6 a" s stage = 0 # 断缆reset
# {1 P" z- |8 p+ p num_shoes -= 1# L3 H a& t9 C6 c* n
% r& A6 c- I8 d$ C1 { s return profit, commission_paid
! a. [/ Z# i e; a: {% R
4 h p& f# j" w: U- G T& J; i, Z# 设置命令行解析 X0 D; c7 T( U2 X7 |3 g6 O3 l
def main():! X% u7 h4 i F7 K3 P% t1 b
parser = argparse.ArgumentParser(description="Simulate Baccarat strategy with commission on/off.")
8 d/ c: u3 h E: R# c parser.add_argument('--commission', choices=['on', 'off'], default='on', help="Enable or disable commission on banker wins.")
: a G- b* Y8 G2 S" S5 @ parser.add_argument('--shoes', type=int, default=1000, help="Number of shoes to simulate.")
4 A2 C7 v. v% ?: {1 V 9 Z# y4 F7 X0 |4 ]+ F+ G
args = parser.parse_args()% @- V+ {) Q4 F% }* t( Y
: q; D) d% d; h+ d9 _6 i3 s # 抽水开关:开启或关闭9 a7 {3 a1 ?" U1 q
commission_on = args.commission == 'on'. J" C" {# ?+ v/ p) d
$ U) T/ q( m3 j
result, commission = simulate_strategy_A(num_shoes=args.shoes, commission_on=commission_on)
6 n+ V. D9 C7 b8 Q9 e8 ], _ print(f"最终盈利: {result:.2f}")0 b0 N; X9 {( N( \( y
print(f"累计抽水: {commission:.2f}")
" O. W5 Z5 W3 T d% ^, v4 v
% S, P$ }" p# {$ g) |) Z8 dif __name__ == "__main__":- P2 B; Z' z. t/ m/ r# G+ H
main()
3 k: m! |$ p% U1 h) ]
+ N/ O( Y' l/ B' i0 U8 ~
- V/ {: l8 |6 P/ z4 q# U步骤 2. 运行
, W. b! a( X; q' ~
. \ A1 S7 e/ d+ s/ ^在命令行里进入文件所在的文件夹,例如:
* F' F$ D& o n7 j. scd C:\Users\你的名字\Desktop
8 Q2 m4 s% v8 _4 z* C9 Dpython baccarat_sim.py
3 N9 y+ O! L5 k' e9 N3 a* ^' f
! v, X. h7 J7 W9 R C( s输出会显示:9 ~' W9 N0 T) @. m, l
& I! e3 A% x% n- N% y累计盈亏: xxx* G8 T7 d( A: L
累计抽水: yyy
l& q: c& G# ~( a& Y-------------------------------------. s9 h; v) M2 X% Z. ^/ S
实例:试跑3次,
; | g4 z) E2 A! A8 ?C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
4 D5 f- o. B8 {0 t最终盈利: -5360.35 & q& `6 j- E ^' r$ N
累计抽水: 5176.35 4 V" K3 B. i* c; l6 ^$ b
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
+ |& t' U' a% y" v' `$ F3 A最终盈利: -5661.65 ) N& ^1 o5 d' Q( [9 T7 S* ]
累计抽水: 5174.65
2 V- u2 p- d6 |) }5 Y( X3 F, fC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py 1 B4 D" C0 q' A) E; T1 H. @
最终盈利: -4244.50 9 Y- O$ {9 s) B3 N$ J9 X
累计抽水: 5176.50
1 {2 I m. K- h1 |4 F8 m( H% I! s& d* M) h5 o5 Y" O+ s; E; O5 Y+ n
说明你的 Python 已经能正常跑模拟了。结果也很有参考性:
3 D' s9 k& V/ Y& \* p4 B$ ^$ K$ q& O5 f9 c: P
累计抽水固定在 ~5175 左右 → 这和你设置的「抽水开关 ON」一致,因为你每手下注金额相同(例如 8 单位),程序是按 Banker 抽 5% 计算的,所以长期下来,抽水会稳定在一个范围。
6 p5 o# f' I X' c% W8 Q6 R' e* _/ Y) X ?; h8 l& X0 q; l
最终盈利为负数(-5360、-5661、-4244)→ 这说明在 100,000 局的模拟中,哪怕加上和局不计,下注方向固定,数学期望依然是亏损。
" o. T& ?9 }" d) [; I! F这条缆不能直接用,用了会输。必须改缆法,或改缆法并且改下注规则。) v6 M# h) b( ~4 @$ B- m
人们喜欢举例盈利,有吸引或牛逼的效果。。。用亏损的例子,可以真实告诉你,道阻且长不容易。
\8 `' }" {, @; m% o但是别沮丧,办法总比困难多。只是,你自己悟的,是最好的。1 Y) s2 l* n, _+ K8 L! \
' @( f7 A3 g4 s( m4 Q, m" |0 ^启发,,,可以变更缆法,改变庄闲比例,指定胜负路。。。。(待续) |
|