|
|
楼主 |
发表于 2025-10-31 11:15
|
显示全部楼层
本帖最后由 Banker 于 2025-10-31 11:17 编辑 9 O6 G) {3 f0 M8 |% S; E" b$ w
7 x a7 C: @% x* B4 X- a7 _! Q
可用Excel,逐手模拟过程(但 Excel 跑不了 100000 靴,会非常卡)。
% r4 ]) K* u, aExcel 更适合 直观小样本测试,Python 才能跑大样本,Python 可以试试N万-1亿靴,10亿靴,有没有没必要?你高兴就好。
. [; j. L( a5 T5 P
9 V6 X, E$ B: K; E# a7 J' b在你电脑上运行 Python 模拟器 (版本3.0以上,若没有,在Python官网下载安装)
1 V8 `# [* Z% o' p' M" ]2 g假设你已经安装了 Python 3.x(在命令行里输入 python --version 或 py --version 看看有没有)。
' ?2 d% w$ S6 ? C: F先写一个最基础的 百家乐投注策略模拟器(自己定义的规则)。& d; ~5 [- e4 B" z7 m' c: R3 D! S" N
' ?# E: V% [( A3 a步骤 1. 新建一个 Python 文件
( q! P, N( ?. w. g8 E打开记事本(或 VSCode、Notepad++ 都行,我用记事本)4 A% W N: K1 L% f' L3 m3 |3 O
把下面的代码复制进去。
3 d7 R6 M. Y8 u9 o+ n1 B保存成 baccarat_sim.py (注意后缀是 .py)。
9 D8 P' ]# i) ?. h+ v Z n/ u( U& V+ ]1 Q6 \7 b& N
import random
* ~6 v/ T: x1 k9 h% v/ ~4 Dimport argparse+ J6 l$ k+ f: X* }: j8 ]. q: A+ m( `
% h' s D, ^4 a# s; e
# 初始化鞋子6 O, m* z7 I0 I( q1 ]; j
def init_shoe(decks=8):
% f: g. P4 [ O( h) Y8 q # 每副牌52张,8副共416张
7 p# K/ P7 m) {* [) p shoe = []6 ^6 d8 a1 |# {4 h* L( W* r1 U% @
for _ in range(decks):
$ M# N, B6 U9 D shoe += ['P'] * 24 + ['B'] * 24 + ['T'] * 4 # 简化:庄24, 闲24, 和4) o/ \+ M8 U1 J5 ?- I. \
random.shuffle(shoe)5 B2 I: H5 {2 E0 x0 M7 b+ @
return shoe7 ?5 q7 t( s* ]% @
1 u* B7 f* T$ J4 B; `; s. L! T
# 发一手4 R3 I3 a- h. |" w w, \2 U5 O
def deal_hand(shoe):
' j3 F. u, g: Q J if len(shoe) < 6:, ?, e# W! H: D' |, w% R
shoe[:] = init_shoe()+ P+ Y! l* n% v3 k; w+ U# A. h
return shoe.pop()
2 p2 e% n' [/ n$ j/ W% J4 r3 G. m, k+ |
# 模拟下注法 A
5 g; H& w7 U( Bdef simulate_strategy_A(num_shoes=1000, commission_on=True):
' o, S0 n7 t, W0 p profit = 07 {, G$ Y+ O6 v {1 G, F
commission_paid = 0
# B, S7 R; M; X# I shoe = init_shoe()
( ~7 B- r, Y. L/ \7 Z3 a ; m, ]6 a/ E U4 `5 E2 b
# 策略参数2 F! [6 G/ i/ A5 A+ ^9 r
sequence = [1, 2, 3, 5, 8, 13, 21] # 示例进级# \8 n' }) A" D$ r4 W) L5 u
stage = 0
# G6 p1 q2 S1 Y4 @( W! V0 Z0 g target_side = "B" # 起手投注庄% d, v0 Q# e' [8 V3 h/ z. p
6 H/ ^: T' y2 U/ g' Q+ O+ ] while num_shoes > 0:8 M/ r8 e' N c0 {0 F' A& L4 w! G
result = deal_hand(shoe)1 T( p1 b* |; w/ T4 q
' @/ N: }$ u2 ^+ a
if result == 'T':
2 M2 w7 ]' h! c+ W: ? # 遇到和,不输不赢,重投
3 k/ X3 s, P0 j, m7 T; G continue7 q3 I- {8 J7 }
2 r' [: s3 P& }/ _
bet = sequence[stage]
3 P' P1 k" U0 z; `; e7 V
8 \$ Y0 z$ ~0 D& `7 ? H if result == target_side:
* n4 y) T% d7 D" H# J# F # 赢
% r! ~9 c5 e4 v win_amount = bet
9 o! j$ z& A/ B. I& \9 B if target_side == "B" and commission_on:
% Y5 \6 G1 V& P+ e win_amount *= 0.95 # 庄赢扣5%抽水0 ?" M1 s% I0 V; h; O, y9 k3 H& r' X# V
commission_paid += bet * 0.052 Y+ P3 x6 P: ]0 N5 n4 G6 D
profit += win_amount. A; w; f; x) X2 c( u: w }; p
stage = 0 # reset
- {/ L# g( s$ k( j target_side = "B" if target_side == "B" else "B" # 固定庄(A策略固定)( z5 i- c* O5 `" d" q
else:. {( t, V/ n! L# i9 ~* N
# 输. a7 d1 ^2 Y# d( [+ I% ?% F
profit -= bet
$ ^8 k, Q* u2 V: G+ v stage += 1" [' U; f* Y( {8 f/ V
if stage >= len(sequence):
. U, n! c2 p" h stage = 0 # 断缆reset
; N, T C' C2 ]2 B, T, \* K num_shoes -= 1
4 q; N2 L2 m0 V9 l
4 o9 \5 K- g+ W return profit, commission_paid" R6 [. y0 S2 {- d
9 [; [( z0 K5 Q2 E# 设置命令行解析
- u' X. \3 c4 sdef main():6 f$ m& Q) H. ]' B$ |5 t
parser = argparse.ArgumentParser(description="Simulate Baccarat strategy with commission on/off.")/ l% }# i ~2 ^! }
parser.add_argument('--commission', choices=['on', 'off'], default='on', help="Enable or disable commission on banker wins.")& l- z- w3 L* j% m0 ^
parser.add_argument('--shoes', type=int, default=1000, help="Number of shoes to simulate.")
" ]( ^8 a6 Y, B. ?$ Y( T) F
( l& J/ n' P# m' G4 k( W( e3 I3 ^ args = parser.parse_args()
' v+ H; J4 O5 ~6 y$ j$ h( L4 q : ?# b. J/ x, N. d, A# C
# 抽水开关:开启或关闭- l5 g4 X- S+ q) o3 D5 P6 ?4 q# z" Y. i
commission_on = args.commission == 'on'; u* X6 t& }: O
7 B" U5 q7 `* t* x5 K# c
result, commission = simulate_strategy_A(num_shoes=args.shoes, commission_on=commission_on)
. e# g1 x0 k3 M7 _ print(f"最终盈利: {result:.2f}")
' p: D3 b+ C y i$ u0 Q print(f"累计抽水: {commission:.2f}")( w; Q: |9 r' H6 Q. D
( ^, G; C) t1 U( h2 U) j2 {if __name__ == "__main__":2 h/ F4 S! I/ f
main()+ k" |, H( C" A9 y: y4 l: u* i
0 Q: k* r; I+ Z' W2 k( W
0 f: c3 N' v: O# O; }" }7 O
步骤 2. 运行
4 U- f) C' b% H% k6 h8 d; k+ M: e8 Y' |5 V* o3 Q! v* T9 g1 K7 r% f3 k
在命令行里进入文件所在的文件夹,例如:
* h% e: N/ N# A0 d8 m, Qcd C:\Users\你的名字\Desktop* F( e) j% c; o
python baccarat_sim.py
+ W8 p- ?0 {" Z7 [+ P! h. K2 H1 i' l- y5 b9 L0 `
输出会显示:
4 g M! Y' \! A. D0 a! {7 _& }5 t
累计盈亏: xxx
- u) h. A* D9 Z: P T累计抽水: yyy6 A9 z# j. S* g- J# `+ N, X
-------------------------------------$ ?7 \6 K* X% X
实例:试跑3次,
8 A4 y( c! X- E5 eC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py & K/ E( D6 V: N; I! P
最终盈利: -5360.35 5 j& D9 e2 [" m# m* H
累计抽水: 5176.35
}# n4 B4 Z, N" {" z5 Q- V8 G. g OC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
3 X7 l8 x. U; G. ? h( d0 b2 a9 p最终盈利: -5661.65
4 O6 ]' n; ?; H* i7 ]* l累计抽水: 5174.65
3 r1 B* x% c: _# ~C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py % u9 I9 [' V# n' ?! Z4 x9 b
最终盈利: -4244.50
. g7 X) _# H3 I. E累计抽水: 5176.504 {. p7 U2 T1 g2 @. z1 I5 W# }
' I2 b# p" ]: z( D) H4 R说明你的 Python 已经能正常跑模拟了。结果也很有参考性:" ~; h: p5 c/ c' B) ^$ C3 i* {
% I+ `: F8 n4 ?( z6 q. q累计抽水固定在 ~5175 左右 → 这和你设置的「抽水开关 ON」一致,因为你每手下注金额相同(例如 8 单位),程序是按 Banker 抽 5% 计算的,所以长期下来,抽水会稳定在一个范围。9 B& q/ T7 B* M+ I* H- ^
. _1 u& u$ ?9 O8 i2 C5 I5 l最终盈利为负数(-5360、-5661、-4244)→ 这说明在 100,000 局的模拟中,哪怕加上和局不计,下注方向固定,数学期望依然是亏损。3 B1 Q: y& _: r
这条缆不能直接用,用了会输。必须改缆法,或改缆法并且改下注规则。
" k* b* ~- J" T# m人们喜欢举例盈利,有吸引或牛逼的效果。。。用亏损的例子,可以真实告诉你,道阻且长不容易。
4 `3 |' ~. Q9 V, \: N但是别沮丧,办法总比困难多。只是,你自己悟的,是最好的。
! M. \9 R( K& A9 m6 j9 b# c2 @" d5 i( e2 N2 N9 L, f
启发,,,可以变更缆法,改变庄闲比例,指定胜负路。。。。(待续) |
|