|
|
楼主 |
发表于 2025-10-31 11:15
|
显示全部楼层
本帖最后由 Banker 于 2025-10-31 11:17 编辑
, q7 ?) n7 G; G( w. C$ \
3 b: m. H0 a7 E- J3 h- u可用Excel,逐手模拟过程(但 Excel 跑不了 100000 靴,会非常卡)。
/ W/ N3 `6 Y; E$ k% y( pExcel 更适合 直观小样本测试,Python 才能跑大样本,Python 可以试试N万-1亿靴,10亿靴,有没有没必要?你高兴就好。* j& T, n/ a( z3 n
1 \/ P# O: Z' v在你电脑上运行 Python 模拟器 (版本3.0以上,若没有,在Python官网下载安装)$ m; e. b/ ]3 y
假设你已经安装了 Python 3.x(在命令行里输入 python --version 或 py --version 看看有没有)。
% I+ \, q! j8 O先写一个最基础的 百家乐投注策略模拟器(自己定义的规则)。
6 \/ g9 Y. j% h7 X
0 E3 x( D& Q& n. N0 I步骤 1. 新建一个 Python 文件* \+ _4 Q9 p) K& q6 B9 n
打开记事本(或 VSCode、Notepad++ 都行,我用记事本)( N9 j) q h) n/ } b
把下面的代码复制进去。' o( K- i/ F+ H
保存成 baccarat_sim.py (注意后缀是 .py)。' ]" `5 z* w. E! s r+ T
! v, S) q8 _" D3 limport random
2 l0 |; D. ^$ A: g( E2 h3 Timport argparse: Z- ^/ Z$ a: H5 d B2 v; d
; u4 T* G6 P8 j! h' i
# 初始化鞋子) v f5 G9 {) M
def init_shoe(decks=8):8 B. \' ?! {, I$ L( r( f2 j3 O1 d
# 每副牌52张,8副共416张" G- }) D A& T) p
shoe = []1 q6 ~; ~: g8 ^0 h1 x8 y) ]1 o) O
for _ in range(decks):, v) @! d- E7 G9 q4 `- a% h
shoe += ['P'] * 24 + ['B'] * 24 + ['T'] * 4 # 简化:庄24, 闲24, 和4
% K5 Y7 C1 D& h a8 A6 [* ~ random.shuffle(shoe)
2 |. i8 g* f' C0 \/ G5 q$ @( F return shoe
9 r4 G) w! r0 g6 ~9 \ h7 ?+ i; q& G
# 发一手4 W3 T8 c; z: s
def deal_hand(shoe):: T' u2 L& U) `, J; p
if len(shoe) < 6:( F& b+ w0 ]+ I1 L
shoe[:] = init_shoe()
/ e4 L0 y5 n: M& Y6 v, o return shoe.pop()
+ f0 u* x: _* [, t8 L/ e3 F- B, v) V1 X3 ~
# 模拟下注法 A+ R+ o5 ?$ S/ Z
def simulate_strategy_A(num_shoes=1000, commission_on=True):
( T1 m6 m, } I- b0 W2 l profit = 0, ?4 S% w1 u- @6 C& C
commission_paid = 02 \* x& S7 Z4 R. Q) x9 r' R( S
shoe = init_shoe()8 J O( O! B6 J; F8 P6 O- }
0 {. q* h5 P% t # 策略参数3 }4 e, t/ C" d- I. X
sequence = [1, 2, 3, 5, 8, 13, 21] # 示例进级% ?& U: z" C* P4 |% y0 G9 g
stage = 0! C+ H4 p) n7 `* v
target_side = "B" # 起手投注庄5 G; K8 R% N8 U& v" r
/ J" r# q5 {; [8 ~6 O; M while num_shoes > 0:
/ F8 C; M, s8 t- b. F+ E' Q: @ result = deal_hand(shoe)7 ?. Z$ G# |# M; i
2 e7 l8 \5 Q/ c7 E) u! T
if result == 'T': - v/ A( G! j- j# K. W+ P6 |
# 遇到和,不输不赢,重投$ Z# m3 [/ V0 T1 ?
continue
- f5 X. p4 L) i0 H! y" t9 o; c/ h
4 B0 g( G' ~( u bet = sequence[stage]: C5 I9 d3 H; N0 D5 N+ i- {
5 `* S) U3 o9 p2 g1 `; A' q if result == target_side:! K% ~- o* ]& F" j6 m( v, ?
# 赢' Z) D) P: E* Z' d6 S/ }8 R/ K( c
win_amount = bet6 E& Y- H4 c h
if target_side == "B" and commission_on:2 ]- {% {! E2 U. `) M4 U0 q2 _
win_amount *= 0.95 # 庄赢扣5%抽水
( b7 @' {3 v- H/ p1 `! p: Q( L commission_paid += bet * 0.05
9 T& ]0 E, ?+ v3 U5 h9 n$ i profit += win_amount
) U8 Q& b# f' C% [1 K, R Z: e0 r stage = 0 # reset/ I& ^8 ?; V- c. v8 N
target_side = "B" if target_side == "B" else "B" # 固定庄(A策略固定)& C( T5 y8 Z6 U8 E1 b$ D5 a7 F
else:
O! |- F, H. p3 X8 z! |; G # 输% y6 y, N' u3 y- a2 m0 Z
profit -= bet! V4 V3 P0 c. X( c
stage += 1
# y' h/ B0 ?& q: v( V5 T) G% g if stage >= len(sequence):+ ~2 ^' O2 _9 C8 ?6 `6 J
stage = 0 # 断缆reset5 p4 s3 ^7 g% t5 F6 m1 ^
num_shoes -= 1
6 d6 q2 F/ S; ~$ E& ?5 X$ V0 w
return profit, commission_paid" @8 g" ?4 e& O1 F2 ?! r. f
* X8 |) f6 Z& U" }/ A5 r" T
# 设置命令行解析0 ^- E6 f9 H) @, m6 S+ T3 v6 w5 |+ @
def main():/ ?1 j6 U5 P* m6 o3 z1 J2 r* P; G; [
parser = argparse.ArgumentParser(description="Simulate Baccarat strategy with commission on/off.")+ E' F$ ?. n. L5 Q' M
parser.add_argument('--commission', choices=['on', 'off'], default='on', help="Enable or disable commission on banker wins."): s1 n: [+ J4 T9 a: y6 o$ h7 r, C
parser.add_argument('--shoes', type=int, default=1000, help="Number of shoes to simulate.")
' o" I4 g6 ^8 b f) z6 ?$ @$ Y / g3 Y% Z) Y/ U0 w- V X
args = parser.parse_args()
) f( }: ?' {; t8 j& F6 [
$ I7 r$ }& f. s: \5 b # 抽水开关:开启或关闭
5 R: H+ Y% F k3 c f6 W% a commission_on = args.commission == 'on'1 ]. {! r& O2 |
# ~3 W$ H @; {( n7 ]
result, commission = simulate_strategy_A(num_shoes=args.shoes, commission_on=commission_on)! O% M& a) {9 v, O4 `$ D& c+ _
print(f"最终盈利: {result:.2f}")
. o" O' r8 c6 x2 P( I5 h6 D& k# ^ print(f"累计抽水: {commission:.2f}")
0 L2 r3 X( u3 `. G$ r2 a. H. E7 x; {( G3 {0 M) c( j
if __name__ == "__main__":# q/ Y3 i# P5 f5 X5 I
main()
# D2 \3 G+ a' s. H9 m0 I) a
. [* Y0 c; I, q- O
" h6 s/ r ^8 J) T6 ~3 [步骤 2. 运行
; j# O) M) R) y% c$ Y. t: M4 [2 i- f2 y! ^
在命令行里进入文件所在的文件夹,例如: n: T* m! e e# ]
cd C:\Users\你的名字\Desktop7 p2 Q" g/ c, I3 P
python baccarat_sim.py
9 c' U# }2 Y4 t0 I9 i8 k: x5 b' N! g; X
输出会显示:
3 o7 h" y5 @9 W C- A% @& a" z8 p9 V, m$ u
累计盈亏: xxx
: W6 t, y( x7 J j! c5 c. c' d累计抽水: yyy
, W! }% @9 N p2 L- d-------------------------------------: B7 Z+ }1 [$ @2 a( y3 ?& s
实例:试跑3次, ! L8 V7 Q/ ]; A: F
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
5 i) d' h/ b' D6 t& b# O最终盈利: -5360.35
9 k: {/ H+ M# `, p5 S7 L3 l1 K累计抽水: 5176.35 1 Z1 m& w5 B' V; Q
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py 0 s1 t. o5 T0 k
最终盈利: -5661.65
6 Y" k% p1 g0 o5 Q2 e累计抽水: 5174.65
. [1 W5 e8 w4 g) u; e: t5 KC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
O4 M9 w2 r" w2 n% l: T最终盈利: -4244.50 + ~+ q/ a8 z* k
累计抽水: 5176.503 ~$ D; s3 c4 e9 ^
- t( t! @, F+ r* X- Q0 _9 g8 x
说明你的 Python 已经能正常跑模拟了。结果也很有参考性:4 y/ B, V' [5 R) ?
- k) L4 {; o5 I _0 K
累计抽水固定在 ~5175 左右 → 这和你设置的「抽水开关 ON」一致,因为你每手下注金额相同(例如 8 单位),程序是按 Banker 抽 5% 计算的,所以长期下来,抽水会稳定在一个范围。
7 ^4 O& _$ v- j' n" t8 A+ m" }3 F4 b( P: h" h( x5 [
最终盈利为负数(-5360、-5661、-4244)→ 这说明在 100,000 局的模拟中,哪怕加上和局不计,下注方向固定,数学期望依然是亏损。
. ?+ h U* p% D. o5 }, {这条缆不能直接用,用了会输。必须改缆法,或改缆法并且改下注规则。, W4 D# D) O- ~6 S
人们喜欢举例盈利,有吸引或牛逼的效果。。。用亏损的例子,可以真实告诉你,道阻且长不容易。
* \3 }/ E( ^2 ^% k$ M& z但是别沮丧,办法总比困难多。只是,你自己悟的,是最好的。' T2 q* O/ S4 h# v2 ^
, I+ v! N1 w& o" p( L
启发,,,可以变更缆法,改变庄闲比例,指定胜负路。。。。(待续) |
|