|
|
楼主 |
发表于 2025-10-31 11:15
|
显示全部楼层
本帖最后由 Banker 于 2025-10-31 11:17 编辑 8 C4 O3 ]/ R6 m) U! Q
0 U" Q$ L" G+ V+ W! m$ `& J& z
可用Excel,逐手模拟过程(但 Excel 跑不了 100000 靴,会非常卡)。
: y- _4 N8 g+ i+ [7 yExcel 更适合 直观小样本测试,Python 才能跑大样本,Python 可以试试N万-1亿靴,10亿靴,有没有没必要?你高兴就好。' @' @: I+ R3 f0 E g
7 I G% a) i4 y( S" g8 ^
在你电脑上运行 Python 模拟器 (版本3.0以上,若没有,在Python官网下载安装)! v. m n3 ]+ p7 _3 R
假设你已经安装了 Python 3.x(在命令行里输入 python --version 或 py --version 看看有没有)。) [0 x8 P2 P8 o" y, j% q
先写一个最基础的 百家乐投注策略模拟器(自己定义的规则)。5 ~: Y. f" T7 N$ G) h
9 p$ {* w3 Q! c# ?: H
步骤 1. 新建一个 Python 文件
, | i, }% T; o打开记事本(或 VSCode、Notepad++ 都行,我用记事本)! m. |7 P. n& n
把下面的代码复制进去。1 @$ Z: J9 ]) x) H& q6 z, V. p
保存成 baccarat_sim.py (注意后缀是 .py)。
/ e, i+ S) b- O5 f' u" n' D( N# ]: K$ t$ B
import random
& L5 V3 i0 I2 R9 dimport argparse
" T' `- m; {5 u( b* Z# ~$ S: P1 Y+ L) K# G1 M
# 初始化鞋子
& w4 A F9 C1 b( y( _/ rdef init_shoe(decks=8):$ x" S& a1 @# q* ]
# 每副牌52张,8副共416张
; d! q+ d1 h z* X8 q2 d7 B# c shoe = []
8 `' x" }3 |3 ^9 f' B/ N for _ in range(decks):# ?! _* N; G4 Z- h6 o
shoe += ['P'] * 24 + ['B'] * 24 + ['T'] * 4 # 简化:庄24, 闲24, 和4
1 _6 R/ D# `2 d m3 L7 y random.shuffle(shoe)7 T7 v0 t9 i3 j* f
return shoe
2 F& R' ?4 H# i- o, D- u
- e- m: y) T5 I# 发一手- B& o+ p, g( W2 ?0 s8 {
def deal_hand(shoe):0 D+ ?- y8 q `0 ~ t
if len(shoe) < 6:2 r! t9 j0 r* t7 A+ g
shoe[:] = init_shoe()! R9 Q# a" c2 w, V* V$ ~
return shoe.pop()
* y( r& T# M9 p* x! b! Q. I' f) A; l/ l$ \3 k
# 模拟下注法 A
+ ^+ Z' F& g2 L/ l: udef simulate_strategy_A(num_shoes=1000, commission_on=True):! S n- f. Y# T7 `4 l1 L1 B# m
profit = 0
3 E" S2 y8 F# I+ x commission_paid = 0
; A& a- I) |1 Y9 k7 J: |+ m7 n shoe = init_shoe()
1 {& k2 w1 u$ x" M( ~ * B8 F4 |3 \* S& ?) e9 b
# 策略参数
0 l5 J, V/ O$ ?" h0 p, s7 ` sequence = [1, 2, 3, 5, 8, 13, 21] # 示例进级: E' D* _# h* ]/ u6 L
stage = 0
% }7 a a, D7 O# S( ]6 S target_side = "B" # 起手投注庄
: ^6 m8 D6 t: C9 H( Z0 M3 A
9 F% D% S7 \: `9 F while num_shoes > 0:
) \1 }$ D2 R4 M/ W: f) Q result = deal_hand(shoe)# v3 M+ e% O) Y, ~
! A) `1 K6 k7 P( J* c if result == 'T':
|6 B1 x6 ?( i2 Q. }, c" B3 S # 遇到和,不输不赢,重投1 `' K" m! O8 t& I$ k
continue \( i: O/ j8 E$ S
% h% a# l- _4 Q1 {" ]3 w. h8 y bet = sequence[stage]
* o0 G5 {8 L- }0 _1 } 2 W4 }7 |) t! [" q" B
if result == target_side:* v6 i3 ^# |. b3 E/ b N i
# 赢. t5 @1 V- O3 x3 A2 v: m
win_amount = bet: V" i! s- P# ~
if target_side == "B" and commission_on:
+ t. M' t) [! \ win_amount *= 0.95 # 庄赢扣5%抽水
: A& o2 I6 N5 E" N8 B commission_paid += bet * 0.05
9 E8 k' S! I7 H& |" Q0 A profit += win_amount
8 e. f) ~" Z: p, O! ^6 I. ? `5 [ stage = 0 # reset" @7 @# [3 u& v1 H7 E' O8 l0 |
target_side = "B" if target_side == "B" else "B" # 固定庄(A策略固定)' X( ], x0 C: r( x5 q, g6 u( h
else:
' q% w. l5 G: g # 输! j) {8 y$ E9 G# Q
profit -= bet# v# \4 V1 J+ s6 r
stage += 1
0 S8 q: N+ `% _ if stage >= len(sequence):2 o1 {' f; P7 v8 ^3 H- x
stage = 0 # 断缆reset
8 ?7 B9 Y% A) z% V0 R5 }& l! q num_shoes -= 1" E+ @: j; k* a' `6 w. h
5 R) D, s6 z7 { t
return profit, commission_paid2 t. e) J2 v( x& i$ w s% |
/ B+ O1 F1 I5 O4 z& L: H5 _
# 设置命令行解析
2 V8 x( m7 F) ^' L( ldef main():
+ ?" @& S8 W% g parser = argparse.ArgumentParser(description="Simulate Baccarat strategy with commission on/off.")
. _- C" m* W" T. g: o2 l parser.add_argument('--commission', choices=['on', 'off'], default='on', help="Enable or disable commission on banker wins.")9 p; t: {5 J. ~* T9 f0 o
parser.add_argument('--shoes', type=int, default=1000, help="Number of shoes to simulate.")
1 [+ f0 B8 ?, ?. B% F9 c+ {4 z
% C! V# k1 O2 Y1 i args = parser.parse_args()5 p6 ^7 k( N9 B( ]' w* Y3 z
5 B8 \" l: F1 N, b& w& ^1 G
# 抽水开关:开启或关闭
I! w1 d% u0 g6 } L: s7 `/ G commission_on = args.commission == 'on'
) n- B- U0 ^1 z" P# P ; q+ K! ~& f7 n( ]! P; O
result, commission = simulate_strategy_A(num_shoes=args.shoes, commission_on=commission_on)
2 q H6 u+ {5 J# Q! X2 S print(f"最终盈利: {result:.2f}")
+ Y V+ s- T( Y* R; Q3 ` print(f"累计抽水: {commission:.2f}")
D' u G. ?2 @. H4 e
$ D: }" B, h2 V# n+ e( [0 A$ Zif __name__ == "__main__": o' |' W3 ]1 e, ]# F% b
main()
; w, {2 K9 e6 {+ r! Y: h4 P% R1 m
3 y2 T6 C6 c" o1 m" G" R
步骤 2. 运行1 k% q9 y8 o1 A
- O: o- L* t, c( j' |! p
在命令行里进入文件所在的文件夹,例如:
+ C8 e8 ^3 k0 R' J! a4 G: Pcd C:\Users\你的名字\Desktop \8 l. Q9 ]5 H- a
python baccarat_sim.py
4 E9 y" {# x/ o/ J( J# j0 _/ R+ e! o) T# @5 t2 n
输出会显示:
! E7 ]# [- z: r6 T& }8 y8 t& ?: b& @) K& L0 l' ^0 f
累计盈亏: xxx
, `& v, X, \! k' m+ h- R$ u/ L累计抽水: yyy
$ j) P# z0 B% P& r, B0 ]7 ?-------------------------------------
# B" a: S9 I! S! R实例:试跑3次,
g. ~$ s4 ~. M! [: R+ FC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
& R1 `# j$ R& F$ Q( D最终盈利: -5360.35 n) q' ^0 Q! G3 M) x: z' [8 u
累计抽水: 5176.35 " s+ t& g3 U1 Z
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py 9 u! e D- @/ b. D5 {% t* E; q6 W. [
最终盈利: -5661.65
- c, }- X" O6 y5 q8 V8 {累计抽水: 5174.65
! p' [4 U( G/ R" @C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py ( M. b% U+ L1 N" C2 T
最终盈利: -4244.50 ; X1 o" \ ~5 q: l
累计抽水: 5176.50+ E4 B6 Q6 L Z6 r4 }: Q! P
' r% i+ e- k* i4 p( o说明你的 Python 已经能正常跑模拟了。结果也很有参考性:
, W: A9 i) R4 i7 y2 w2 z; E M5 G r; ^. e! H
累计抽水固定在 ~5175 左右 → 这和你设置的「抽水开关 ON」一致,因为你每手下注金额相同(例如 8 单位),程序是按 Banker 抽 5% 计算的,所以长期下来,抽水会稳定在一个范围。
" p2 |3 T4 e% D+ r! o7 @2 }' f9 J% _# b* j4 Y) Y
最终盈利为负数(-5360、-5661、-4244)→ 这说明在 100,000 局的模拟中,哪怕加上和局不计,下注方向固定,数学期望依然是亏损。5 L/ r$ u4 ?7 M# t9 n" e! n/ Z; ]
这条缆不能直接用,用了会输。必须改缆法,或改缆法并且改下注规则。
9 h3 f0 B2 U5 p, l8 M m. F1 a; x人们喜欢举例盈利,有吸引或牛逼的效果。。。用亏损的例子,可以真实告诉你,道阻且长不容易。$ K8 j- M' g. {) @8 d+ \
但是别沮丧,办法总比困难多。只是,你自己悟的,是最好的。' b0 D) V/ w+ Y: K% O
$ i% B; h8 b B启发,,,可以变更缆法,改变庄闲比例,指定胜负路。。。。(待续) |
|