|
|
楼主 |
发表于 2025-10-31 11:15
|
显示全部楼层
本帖最后由 Banker 于 2025-10-31 11:17 编辑
9 n% F: M4 u0 s/ H3 l2 e) C v9 v! l
可用Excel,逐手模拟过程(但 Excel 跑不了 100000 靴,会非常卡)。
7 q) c+ Z8 h! E1 S7 G: DExcel 更适合 直观小样本测试,Python 才能跑大样本,Python 可以试试N万-1亿靴,10亿靴,有没有没必要?你高兴就好。9 ^: z/ H6 {0 z. k1 N* A" P/ j1 \
: o5 J5 j* Q$ ^& w3 c% \$ I
在你电脑上运行 Python 模拟器 (版本3.0以上,若没有,在Python官网下载安装)
4 {: F3 O' [! E i3 s H) @7 E) g假设你已经安装了 Python 3.x(在命令行里输入 python --version 或 py --version 看看有没有)。) l7 x$ m9 l. T# W5 _) y
先写一个最基础的 百家乐投注策略模拟器(自己定义的规则)。
0 u+ j3 L+ ]' X& m/ E6 O( t. o& a( `! {, l5 o+ w
步骤 1. 新建一个 Python 文件
9 X9 j5 a/ R/ N7 A打开记事本(或 VSCode、Notepad++ 都行,我用记事本)8 p% W4 ~2 P3 {; c- m/ q% a
把下面的代码复制进去。
: Q7 u5 M# J/ Z8 E保存成 baccarat_sim.py (注意后缀是 .py)。
1 B- D9 C, M; _
. Y1 ?! i$ p" t q L) e& r" [import random G6 r4 K% Z$ ?# M! W
import argparse5 b; Q, [9 K/ U5 {7 P) ^* j
7 e; W v; u* k+ z
# 初始化鞋子( ?# X% v6 r8 [9 g
def init_shoe(decks=8):; v' e' v6 O& x* U
# 每副牌52张,8副共416张
2 n. p" Q% U3 L" |/ n5 ] shoe = []
" c/ Q* l5 l, f/ ? for _ in range(decks):
% E6 G& g9 N c4 z6 D* m3 R! [ shoe += ['P'] * 24 + ['B'] * 24 + ['T'] * 4 # 简化:庄24, 闲24, 和4
2 w& m$ U1 p% E2 P! p9 G. D$ ] random.shuffle(shoe)
* {. T% m8 P, V$ x return shoe0 r+ t; h7 A, R
6 F/ N: D3 j9 p( O8 b
# 发一手
$ Z' Z) f7 B- ]. [) Odef deal_hand(shoe):
+ ~9 e* Y6 u+ e) w9 |2 h) E if len(shoe) < 6:. K' ^2 q2 i6 M2 @ `1 m
shoe[:] = init_shoe()
; B) u) _( Y. r$ | return shoe.pop()
4 J ~* G8 g6 z7 \0 D% ?/ k
- m# A$ z! Y: Y" _) S% j# 模拟下注法 A
* j' \$ j# y7 q; E/ z; fdef simulate_strategy_A(num_shoes=1000, commission_on=True):
& }- l2 r% @: @2 V( W profit = 0/ x# H1 X7 l$ |3 p4 W
commission_paid = 06 u: o& I2 E0 t( O; i
shoe = init_shoe()
& W' z7 d) j. z* R4 o2 o+ w3 l : B: z" Z: C+ y1 M3 O9 q. k
# 策略参数4 Z3 I1 C7 [# Y" n3 {; O
sequence = [1, 2, 3, 5, 8, 13, 21] # 示例进级
# D s% L7 u& v. X; O- V4 } stage = 05 K/ [* }- c- l6 C9 }* D: {5 x
target_side = "B" # 起手投注庄
: O) {6 ] }; G# ^' R# n* J0 n9 s/ q- |
while num_shoes > 0:* p. o o* r3 l
result = deal_hand(shoe)
6 l$ r7 z2 ^ K g' l; `' K
$ n, k& s* ^8 E2 Z5 | if result == 'T':
% s# J V& [) C9 k5 U0 ^/ b2 v& e, a # 遇到和,不输不赢,重投5 \0 B$ {9 ~; r& _) W
continue
" h5 F/ U! u" i, U6 r5 R
' i9 n2 Q# ?3 a( B( T' w bet = sequence[stage]
" b: t" y7 h; F( ~# W, W6 l- d0 O ; O/ _9 [ E( N, z; g
if result == target_side:
) P+ k* k' y' Q6 e: x # 赢
% U* x' ?$ _) J8 e% h/ V win_amount = bet
& C- `! M! e1 n; \; m( B if target_side == "B" and commission_on:
" H9 S/ P# z) [- k1 F win_amount *= 0.95 # 庄赢扣5%抽水1 P. e* t5 a7 t, q2 B& z
commission_paid += bet * 0.053 m1 p, J- i4 u
profit += win_amount o' P* ^% D( O& F
stage = 0 # reset
8 ~0 o3 b5 I6 L! N* | target_side = "B" if target_side == "B" else "B" # 固定庄(A策略固定)- g( J2 c+ G( B
else:. M! ^$ P7 M% p; G
# 输! x, M+ |7 C5 L7 ^# n% h& \+ F; \
profit -= bet0 x. M9 \6 X' Z9 b* v. S( J1 P
stage += 1
7 \' _8 h, N6 f3 i( o3 ~7 @ if stage >= len(sequence):1 C* {$ g: x0 i- a4 N
stage = 0 # 断缆reset
& c2 N" b ?$ S: j( l u num_shoes -= 19 G" v) J3 `- x0 C
) e2 l* G: @8 h; g# z: {0 j5 h0 ` return profit, commission_paid/ o p$ a; n8 A+ ^2 y Z b, r
* d+ E7 {0 ~4 \* u5 V$ u# 设置命令行解析% y" P( b/ C# S H/ |
def main():# V+ z" ]0 Z2 `# E0 m/ }* w9 B! }
parser = argparse.ArgumentParser(description="Simulate Baccarat strategy with commission on/off.")
! |: l2 F& c: W6 _, \ l1 ? parser.add_argument('--commission', choices=['on', 'off'], default='on', help="Enable or disable commission on banker wins.")
9 y* v4 @8 I- p& H# n& b parser.add_argument('--shoes', type=int, default=1000, help="Number of shoes to simulate.")
! s- ~1 ?% a' j! C1 N
9 F( l: e! A' J# n2 W- H1 [ args = parser.parse_args()
+ Y1 q' X @3 ~; Y5 a4 H
% L z: N! T" Q2 y& F2 d7 M# R # 抽水开关:开启或关闭
6 k+ O# [1 e# d Y& k0 a6 C commission_on = args.commission == 'on'
- S& D: P. q0 _& e) F8 n7 w
( r- l- Y# V9 {" R: J2 J result, commission = simulate_strategy_A(num_shoes=args.shoes, commission_on=commission_on)
1 ^) C" F% v$ f8 ?3 F9 A print(f"最终盈利: {result:.2f}"), \! U1 \3 X# o* p3 V
print(f"累计抽水: {commission:.2f}")
: a1 F7 P2 k1 H2 x8 n. D( j3 y) y' V9 ]4 J: _0 P
if __name__ == "__main__":) d/ N) E- I8 }. ~
main(). m9 K' c+ F; U/ S' ^8 _
4 Y( M" t M3 v4 O k4 @+ k1 \8 `; G6 X# R; D8 P1 L- T4 ]
步骤 2. 运行. q! B8 `8 w; y. r0 t
# L0 g3 v$ p0 q. U在命令行里进入文件所在的文件夹,例如:
' V8 w2 n4 j& V0 {* Kcd C:\Users\你的名字\Desktop5 u6 D: r( v2 [' {. K
python baccarat_sim.py
- l: h5 L2 v$ R& ?5 e/ Y! T1 G
, i8 U4 L$ l5 f! h% T. b7 _输出会显示:, X, c! T/ j" R$ U
# L0 x' L1 P1 x3 M5 _累计盈亏: xxx7 M" k2 B$ X; p I6 Z" R$ i
累计抽水: yyy
1 \1 W a* T. w" ]-------------------------------------
) ~) E4 A, y5 g( `( F4 w实例:试跑3次, / b! t* E/ k4 s0 e7 R j
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
- u4 L) S3 {2 q! D! {7 _6 e" Z最终盈利: -5360.35 ) r+ h4 r2 }5 m W
累计抽水: 5176.35 , u& V& h) A. Z4 y; Z
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
# }0 l. d. F* }9 x' I- z$ z! d; _最终盈利: -5661.65
+ Z" n; s# C% x累计抽水: 5174.65 4 q R- a4 {' `; U" q% j
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
$ J: I1 a, e3 f% Z( ^# E: W- U0 a最终盈利: -4244.50 8 _! q5 i5 I6 e% m4 G7 ~
累计抽水: 5176.50& A& v: Y6 ?9 B& P4 C0 [
& V6 n; e( `, B6 T说明你的 Python 已经能正常跑模拟了。结果也很有参考性:: p2 K7 h- d% L$ r% E4 H4 J
1 G" I5 ~% V$ A u6 `# F! E3 S6 f& L
累计抽水固定在 ~5175 左右 → 这和你设置的「抽水开关 ON」一致,因为你每手下注金额相同(例如 8 单位),程序是按 Banker 抽 5% 计算的,所以长期下来,抽水会稳定在一个范围。: G% P H5 w R( N
5 c2 ~# h d9 Z# e最终盈利为负数(-5360、-5661、-4244)→ 这说明在 100,000 局的模拟中,哪怕加上和局不计,下注方向固定,数学期望依然是亏损。 ^- v" ] G: D5 N) E
这条缆不能直接用,用了会输。必须改缆法,或改缆法并且改下注规则。5 D2 h" n4 o6 _' H! S
人们喜欢举例盈利,有吸引或牛逼的效果。。。用亏损的例子,可以真实告诉你,道阻且长不容易。5 l6 p1 u& z( M c- R( a
但是别沮丧,办法总比困难多。只是,你自己悟的,是最好的。! @" ~ r4 K: D; T; `% G
, e- V5 Q+ E; D/ n
启发,,,可以变更缆法,改变庄闲比例,指定胜负路。。。。(待续) |
|