|
|
楼主 |
发表于 2025-10-31 11:15
|
显示全部楼层
本帖最后由 Banker 于 2025-10-31 11:17 编辑
0 y6 X8 E9 d2 x6 m* ^7 @ R0 k3 B$ U6 \7 w) z+ Q
可用Excel,逐手模拟过程(但 Excel 跑不了 100000 靴,会非常卡)。7 t, N$ V3 l8 L5 `. D
Excel 更适合 直观小样本测试,Python 才能跑大样本,Python 可以试试N万-1亿靴,10亿靴,有没有没必要?你高兴就好。
4 y6 {; ~; S3 \: u
& ?3 K* @1 b6 [0 E6 ]在你电脑上运行 Python 模拟器 (版本3.0以上,若没有,在Python官网下载安装)
7 }3 a1 n" q- S, u假设你已经安装了 Python 3.x(在命令行里输入 python --version 或 py --version 看看有没有)。
4 x5 G: A( ?5 ^( e" J) r1 c J* z' |- t先写一个最基础的 百家乐投注策略模拟器(自己定义的规则)。
+ v& W" Y A( k$ }5 j
4 }/ N+ p: a' q步骤 1. 新建一个 Python 文件5 I/ x' F/ [ h8 B/ P$ |! j* S
打开记事本(或 VSCode、Notepad++ 都行,我用记事本)- p2 f q) [0 G% J, D; }3 r
把下面的代码复制进去。
/ E+ a2 `: Z$ }) w保存成 baccarat_sim.py (注意后缀是 .py)。" D' I- G4 _4 W2 ?3 ?9 F* a! {
$ q* B# c! R0 Pimport random( a7 x) h- ?. I+ ^
import argparse' W/ s' f+ A A% x6 v1 }1 |/ L/ `" z
2 q) C `9 O& h: @6 |$ v2 k
# 初始化鞋子! t5 N* v, P1 O/ L, d8 x9 U
def init_shoe(decks=8):
3 V0 n* P$ Y) D # 每副牌52张,8副共416张
. H) D& `: ^- I( j9 X shoe = []
: F$ A/ ]3 l/ I% _4 J! L w! T- s _ for _ in range(decks):% E4 q- I* Z3 z9 {2 F
shoe += ['P'] * 24 + ['B'] * 24 + ['T'] * 4 # 简化:庄24, 闲24, 和48 P# S: F5 c; z& }/ U
random.shuffle(shoe)3 J3 G/ i9 b$ h5 B3 p5 c; w$ G# E2 ?
return shoe. k, ]+ S; {' g' Y
- @+ G2 q: s: n9 K- c: P# 发一手/ F( H0 @) ^* {5 j" j, @
def deal_hand(shoe):9 ^9 }5 ~8 {; b( S; E# E) |! k
if len(shoe) < 6:
, B( w# ?0 O- e1 g( S shoe[:] = init_shoe()
+ [5 v I7 g: R) S return shoe.pop()
7 E e) Z \& _: i9 ]2 K3 A. k |
! U- A" J" |# I& O, Z# 模拟下注法 A
' d: J. B4 R/ K; sdef simulate_strategy_A(num_shoes=1000, commission_on=True):
7 S, Z! _. G( X9 B# x, B( @6 G+ e profit = 0
- w' t) g4 x& j1 y commission_paid = 0
) U$ ]" ~2 l$ V4 G C% L& G shoe = init_shoe()
# N3 g ^1 l T8 e* D1 Z3 V. D3 t
3 B7 i) N3 f! W # 策略参数
: C' s8 _+ u8 T/ [% Q sequence = [1, 2, 3, 5, 8, 13, 21] # 示例进级5 s4 O u, [4 X m% W
stage = 04 L/ @, a% p* [6 a9 D& q
target_side = "B" # 起手投注庄4 T" i E5 V N. H1 N L
) I* d( m5 t8 @ while num_shoes > 0: N* }, J% d+ f; x1 I, N3 r- e
result = deal_hand(shoe)" e+ r& ~9 m2 q/ ^" i
1 z' h" W: n! K9 ]) z* V2 q
if result == 'T':
; e( I8 l& H J # 遇到和,不输不赢,重投' e% e3 I& o: c" d$ w
continue; o& b- z. ~+ f. N
! D, G. B/ f& Q! {% B! h
bet = sequence[stage]
5 L) `$ `3 v* |+ f
# M1 R. _! f8 q7 W. G$ d if result == target_side:
7 q* v) K. ^& e. [' F # 赢9 s, z. H) k* D2 J5 e
win_amount = bet
6 r4 D* ?0 K0 R! C4 v if target_side == "B" and commission_on:7 c1 i9 L9 ]: p& \
win_amount *= 0.95 # 庄赢扣5%抽水 {# O$ b+ J o' B) G5 _2 j
commission_paid += bet * 0.056 ]4 j- D$ m) e; F# x
profit += win_amount
6 x+ J1 K% ^- W0 Z9 Z0 e# T- b4 f" U stage = 0 # reset) G+ r, r1 X1 v% E" e! r
target_side = "B" if target_side == "B" else "B" # 固定庄(A策略固定)# R& i9 W4 e4 w F
else:
; h* l8 |' N* n) O$ G4 {5 G) C: z5 \ # 输
" h9 c" T" I' Z% ?. Y profit -= bet
* ?; ~* B& P+ C& R0 a$ \ stage += 1/ ^6 v0 H* L1 {) ~
if stage >= len(sequence):
2 R4 B! l3 _! l8 K3 v; A; M$ U stage = 0 # 断缆reset
" v* p' t# d8 [9 I num_shoes -= 1
% P" g, A! ?0 |8 [1 G1 h' F3 N8 c9 z$ l# Q
return profit, commission_paid
+ b2 S2 Z* J B% y" u
1 b$ X0 c; x) m, b8 k- O& i; s# 设置命令行解析
* C2 a+ `* u" l+ A2 adef main():
9 ]; O4 M7 O- R" {$ ^$ h+ N, D parser = argparse.ArgumentParser(description="Simulate Baccarat strategy with commission on/off.")
2 ~5 b7 r* O. z6 C X1 K parser.add_argument('--commission', choices=['on', 'off'], default='on', help="Enable or disable commission on banker wins.") G; S8 w' O$ w# z$ d& b5 ^6 [7 k
parser.add_argument('--shoes', type=int, default=1000, help="Number of shoes to simulate.")
4 ?% Y9 ]+ y/ D, v. E
2 Q3 O( k' H& h1 V: ~9 l args = parser.parse_args()
2 a9 m, r) j9 ~4 ` x
9 _, C( ~; ^# B5 H% z # 抽水开关:开启或关闭
/ A6 f& h) C3 \% c7 c1 G0 O commission_on = args.commission == 'on': L! U! z- X$ g2 I$ b
5 O; }0 W3 z! C6 A4 Q result, commission = simulate_strategy_A(num_shoes=args.shoes, commission_on=commission_on)2 R8 O, A; O; ~! |- [3 W2 `
print(f"最终盈利: {result:.2f}")& ]7 r- X. j0 I4 a! O6 |
print(f"累计抽水: {commission:.2f}")
& { D. A- y9 o8 W1 j- @! K) k' n0 B5 o1 f
if __name__ == "__main__":
( }' K+ U" ~2 ` main()
* e: J; S9 v: V& @4 W) J
6 }, ]# t, f+ d" D: {4 Y/ J6 {: i3 W. W4 \# G& @
步骤 2. 运行+ f, B% c9 V6 s1 D$ F+ m
, `( q, l; ]# P在命令行里进入文件所在的文件夹,例如:% `" Z! w: j o- @1 ~+ z3 m
cd C:\Users\你的名字\Desktop
8 J! h7 v) Q( w$ {# F' qpython baccarat_sim.py2 f0 p I4 k& v* j }1 p7 o
) D3 E0 O0 ]5 O7 M! T
输出会显示:) l' Y: v6 E* }3 Y2 B0 l
; A% ?) h* X1 P r$ ?$ [! t累计盈亏: xxx
% Y( s7 c# D) L( L累计抽水: yyy
. p; |3 {7 G% J% E, i4 P% V6 |------------------------------------- J; j. ^* g' e- i& [4 r1 P6 G
实例:试跑3次, 7 ^: @4 T# u4 N' M: [' D" A( m
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py 6 l5 ~$ B3 x* Q7 f
最终盈利: -5360.35 : S9 Q8 x: f. L5 {! O K8 E
累计抽水: 5176.35 1 \; X. u* s% i( r. [
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
/ _9 d8 z$ R6 `- Y( g ~5 k- G8 B最终盈利: -5661.65 . Q( {7 N1 X2 P4 G: U: @4 A5 o
累计抽水: 5174.65 l" m" a% o6 q9 d
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
4 e8 \3 E1 d. @- O+ E# _& M+ ^最终盈利: -4244.50 & m, W7 w8 f c' G
累计抽水: 5176.500 H$ `9 A; G9 A6 ?' ?2 p" _ O: m
! B' E! W$ {; p$ j* z6 ]说明你的 Python 已经能正常跑模拟了。结果也很有参考性:
' u0 w6 c7 R e9 j! U" |- [0 x; @1 q: U% v: i5 i! s& s U* q$ f2 A# t
累计抽水固定在 ~5175 左右 → 这和你设置的「抽水开关 ON」一致,因为你每手下注金额相同(例如 8 单位),程序是按 Banker 抽 5% 计算的,所以长期下来,抽水会稳定在一个范围。
; [* l- d3 P7 d* m7 B$ P( c! b2 n5 b' }/ f3 {/ V7 g
最终盈利为负数(-5360、-5661、-4244)→ 这说明在 100,000 局的模拟中,哪怕加上和局不计,下注方向固定,数学期望依然是亏损。/ G& u: q8 U& L, s
这条缆不能直接用,用了会输。必须改缆法,或改缆法并且改下注规则。
5 S7 M- S7 \7 K) a: z人们喜欢举例盈利,有吸引或牛逼的效果。。。用亏损的例子,可以真实告诉你,道阻且长不容易。% b1 S, n1 z' U0 E) ^
但是别沮丧,办法总比困难多。只是,你自己悟的,是最好的。
' N; ~$ W P3 n# z; J7 ?
: ~6 g9 x% x1 h$ l( w% a启发,,,可以变更缆法,改变庄闲比例,指定胜负路。。。。(待续) |
|