|
|
楼主 |
发表于 2025-10-31 11:15
|
显示全部楼层
本帖最后由 Banker 于 2025-10-31 11:17 编辑 . Q, U: j } \ U+ o2 Y
4 d& ] n: o6 o) W可用Excel,逐手模拟过程(但 Excel 跑不了 100000 靴,会非常卡)。- _/ @+ J/ E5 e8 Y, \' P" f8 v
Excel 更适合 直观小样本测试,Python 才能跑大样本,Python 可以试试N万-1亿靴,10亿靴,有没有没必要?你高兴就好。* r2 r6 B4 x8 I9 ^- E9 _
6 b+ w- K0 Y3 }9 @
在你电脑上运行 Python 模拟器 (版本3.0以上,若没有,在Python官网下载安装)% c- M X4 T! o& p2 p' o
假设你已经安装了 Python 3.x(在命令行里输入 python --version 或 py --version 看看有没有)。
- S, a" o `, J4 s先写一个最基础的 百家乐投注策略模拟器(自己定义的规则)。
! g0 t1 H4 z! B3 ?
( u& w5 M" |4 z步骤 1. 新建一个 Python 文件
/ O( `" j/ Y0 J; M' j' h9 L打开记事本(或 VSCode、Notepad++ 都行,我用记事本)8 M' f% X ~" _
把下面的代码复制进去。9 K6 o0 |+ f2 \$ r0 H
保存成 baccarat_sim.py (注意后缀是 .py)。
$ U" w1 j9 s7 M$ S' X" W/ H; l! K0 k' t, N
import random( ^; h8 k6 P3 j5 z8 H `8 X
import argparse
i4 Q; T0 T% U3 o3 ~0 G
/ F1 i* |; ]) ?; `5 B: p# 初始化鞋子
# [, s1 d6 a' R; [def init_shoe(decks=8):' O8 G% T( ]$ w0 c, Q
# 每副牌52张,8副共416张
/ O0 x M$ Y* f shoe = []
6 ]6 j$ X0 C. g9 T9 A# y for _ in range(decks):; S v" l3 G1 d/ O
shoe += ['P'] * 24 + ['B'] * 24 + ['T'] * 4 # 简化:庄24, 闲24, 和40 R5 q2 m% S C4 [9 }0 m5 u
random.shuffle(shoe)+ v6 g- r, x6 {/ c* L+ j% m% w
return shoe% d! P& T& c0 V7 C
) W& v# u8 H2 Z `. j( M# 发一手. d$ g3 _0 H h! q
def deal_hand(shoe):
$ Q6 ]" s/ y8 o/ u4 @8 e0 m if len(shoe) < 6:1 D/ r# \6 q) T: K; X0 T
shoe[:] = init_shoe()
3 `% r: b/ Q- S9 Q2 _7 B return shoe.pop()
. a) u* r/ Y. G; u& _$ J, _# r4 A& E1 l, T1 x
# 模拟下注法 A6 I; F/ ~3 `4 h7 l) B8 @1 M* r
def simulate_strategy_A(num_shoes=1000, commission_on=True):
; S6 t( x, W! u profit = 0/ @6 g- V9 h! \2 p" y5 Q! h! c
commission_paid = 0$ }; D3 l* ~1 r5 n% s3 Q2 F5 R
shoe = init_shoe(); @$ g- [# ~: l* s5 S9 {+ M
% T& h9 r- A! f* C7 ~4 J' h) C) I # 策略参数
, K+ T7 a% S. x sequence = [1, 2, 3, 5, 8, 13, 21] # 示例进级$ y# `* {3 L4 R4 |' d& Y
stage = 0# G( z, c4 ~" U% r, H
target_side = "B" # 起手投注庄- \- E. h. q2 R0 b
! b3 r }7 c9 C* e7 X
while num_shoes > 0:* g0 _4 h4 ]6 ~- J
result = deal_hand(shoe)3 e( y, h* k [6 l& Q
4 w4 p( V R* ~ I& p7 f: |# n
if result == 'T': ! o, q* n& j/ h) Y
# 遇到和,不输不赢,重投
7 t# b0 O& s6 U4 Q" F continue4 g" g" _2 G: Z* h, b6 _
3 s+ C& y% G5 s6 y- R* Z
bet = sequence[stage]2 V) \$ q6 \3 l! X; A; D* H& H0 e
, f3 g/ f& y1 d, e4 A l
if result == target_side:
' {! W" o9 F/ ~$ l0 M9 T# U2 \: ? # 赢
/ q" p/ m7 n. c! |1 g2 y) ] win_amount = bet
9 l7 l- |# s" o, v% U& p3 F if target_side == "B" and commission_on:
/ @, r' |: o) v% e win_amount *= 0.95 # 庄赢扣5%抽水
4 X, K' t( O4 _6 Q commission_paid += bet * 0.05
2 Y" e% R! }) ~2 Y' G t4 R0 A5 o profit += win_amount; `2 ]& p/ C$ p+ l$ W: O, T9 I
stage = 0 # reset
2 u' p4 H' L6 D/ a: l; P+ a. d target_side = "B" if target_side == "B" else "B" # 固定庄(A策略固定)4 r+ v* W- r/ B1 A+ C) \$ X
else:
& i% @+ [4 Z/ _# G O- D2 ~% m # 输% m" Q( Z) N8 r0 {; h: x2 p" ^
profit -= bet; L* `0 p; [4 w2 {
stage += 19 N! s7 d! a" M, o' l1 z
if stage >= len(sequence):
. b$ t5 [2 v3 d! [ stage = 0 # 断缆reset
/ n$ |; W; e2 n% r1 P9 P num_shoes -= 1
# Y. n% ^. Z- z5 p) d4 h' V& b# W' `! z# r; V- k+ n
return profit, commission_paid- F' Z0 o- G* t* c/ e
* e. i' H8 A8 I0 C7 J
# 设置命令行解析3 ?, N B! \ M ]) N9 a A
def main():. T% K: r# g0 l- O+ G, O5 \/ F
parser = argparse.ArgumentParser(description="Simulate Baccarat strategy with commission on/off.")" w2 M# t1 Z0 ^
parser.add_argument('--commission', choices=['on', 'off'], default='on', help="Enable or disable commission on banker wins.")
# r: U! B4 @% p% \ parser.add_argument('--shoes', type=int, default=1000, help="Number of shoes to simulate.")0 R: b& @0 d: ]! \
1 n, X" ~5 v$ G' T; p S
args = parser.parse_args()
& o' b; M P& ~# Q5 R3 g
8 m# A$ c, m3 n8 i # 抽水开关:开启或关闭
4 S' O' u, i ?) P2 z commission_on = args.commission == 'on'
# ~6 }& A4 H3 q) z m' @ 9 W( }$ K' @- F, \
result, commission = simulate_strategy_A(num_shoes=args.shoes, commission_on=commission_on)6 H; [( ~ v$ S4 X! V
print(f"最终盈利: {result:.2f}")
0 N* A1 k+ \" @3 Y7 V& t print(f"累计抽水: {commission:.2f}")% _) s! h& J5 ?5 J
$ m6 e. F3 `- \# P+ i [7 N7 [! h
if __name__ == "__main__":
4 [, s, C9 B. }- z1 N0 P- k main()7 a1 R1 f: {2 e9 h5 f* ]9 z% U# D# Q
" t' A, ~7 ^- w Z( \
+ K: o7 w- r2 {% A) m7 o
步骤 2. 运行
8 U, W ^) y" c: ^* u5 M4 s
/ T6 [! J9 _, p9 u' ^; V在命令行里进入文件所在的文件夹,例如:
+ T+ s: N* O) J3 @9 x& Icd C:\Users\你的名字\Desktop2 M6 m" b# @+ X: r- O- ~& _
python baccarat_sim.py
9 ?$ Q8 |; p! B& T) b O5 j9 [% Y8 m* a- w- D: I% \
输出会显示:
! [9 I3 ^7 u1 Z, B9 R* S; T( i/ [5 B4 y* F6 i
累计盈亏: xxx( j- P$ o! N/ r9 h+ F
累计抽水: yyy
[1 f+ S# I4 j5 D-------------------------------------% A( ?, l0 y' t! D H
实例:试跑3次, n# R7 t7 a' t% D1 g* k- w0 u
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py 2 l0 f4 U) q$ i1 ~4 S
最终盈利: -5360.35 ; o; I5 q: Q( W3 Y
累计抽水: 5176.35 ! R. I# O1 |, k* l
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
5 n7 i. K% }% q) z2 x9 U最终盈利: -5661.65
_' H" ^2 C" L" K: O3 U3 f累计抽水: 5174.65
3 E2 }9 C; ~* m v' RC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py 6 g, \5 O& p& E& @* o+ P
最终盈利: -4244.50 1 m4 a3 T6 D* [& b
累计抽水: 5176.50
3 I) C2 `, i* z N7 _+ ^! x3 m# X: e# A
说明你的 Python 已经能正常跑模拟了。结果也很有参考性:
^0 D7 C5 Y0 Q1 H' y! ?& U9 N: c5 K) V
累计抽水固定在 ~5175 左右 → 这和你设置的「抽水开关 ON」一致,因为你每手下注金额相同(例如 8 单位),程序是按 Banker 抽 5% 计算的,所以长期下来,抽水会稳定在一个范围。
" R% ]; U: S' r% M( C' P
1 C, R' g2 g" h: K! n最终盈利为负数(-5360、-5661、-4244)→ 这说明在 100,000 局的模拟中,哪怕加上和局不计,下注方向固定,数学期望依然是亏损。* g5 W5 t9 j% V8 ?. ?+ x7 W
这条缆不能直接用,用了会输。必须改缆法,或改缆法并且改下注规则。0 K1 l4 l! [- a. P4 O) o
人们喜欢举例盈利,有吸引或牛逼的效果。。。用亏损的例子,可以真实告诉你,道阻且长不容易。+ m3 O" D0 T0 L6 T
但是别沮丧,办法总比困难多。只是,你自己悟的,是最好的。! l) `. v. }5 Q$ Q, ?
2 D/ L ^ T. E% x3 G8 F
启发,,,可以变更缆法,改变庄闲比例,指定胜负路。。。。(待续) |
|