|
|
楼主 |
发表于 2025-10-31 11:15
|
显示全部楼层
本帖最后由 Banker 于 2025-10-31 11:17 编辑
: a, W0 ?. T7 `, L- m0 X2 ?9 e2 O, L; }8 O4 y
可用Excel,逐手模拟过程(但 Excel 跑不了 100000 靴,会非常卡)。
# M2 j, |5 |* nExcel 更适合 直观小样本测试,Python 才能跑大样本,Python 可以试试N万-1亿靴,10亿靴,有没有没必要?你高兴就好。, S; [8 g' w8 W3 [$ o
5 K) b4 j$ ?; k( |; @; ?# h0 ?& J在你电脑上运行 Python 模拟器 (版本3.0以上,若没有,在Python官网下载安装)
0 L: ? t# S! C( y8 p) Z假设你已经安装了 Python 3.x(在命令行里输入 python --version 或 py --version 看看有没有)。; u; k6 b0 a! Y% x1 B
先写一个最基础的 百家乐投注策略模拟器(自己定义的规则)。
# ?+ e0 }2 ?9 Z0 {+ i, `( m
) ~ g) |3 l0 j/ O# m+ \7 }步骤 1. 新建一个 Python 文件
& h; Z7 K8 Y# D& H- o' @打开记事本(或 VSCode、Notepad++ 都行,我用记事本)# N0 v5 ~- r- K \
把下面的代码复制进去。6 A9 ?5 [8 S- U1 V9 H5 r% U
保存成 baccarat_sim.py (注意后缀是 .py)。
1 o( c4 @; v* k V5 t0 @' W6 |- [. `5 `- B# K7 c2 e5 g2 q# A
import random
, z" ^' l5 e+ A% a( ~0 jimport argparse
7 _8 ?4 L% Z( R! V$ ^# L% c, [& i
" [5 z0 d4 P$ r) M, b3 q: Z# 初始化鞋子
) v- O' Q q7 Sdef init_shoe(decks=8):
* \- m3 Y% S0 Q2 v6 _8 p1 M- ? # 每副牌52张,8副共416张
% H! ?4 u5 s* I& } shoe = []
- o- K B5 c& z% v0 C for _ in range(decks):
+ K& _1 Q* m3 }0 [8 J, ?6 | shoe += ['P'] * 24 + ['B'] * 24 + ['T'] * 4 # 简化:庄24, 闲24, 和46 Z9 W% V4 l5 `7 s
random.shuffle(shoe)
& Z" L6 a& u4 p/ o1 G return shoe# h; T. |, {) r, E: Y7 n1 @
) c5 _2 o, Y( T1 G# 发一手( N# R1 `3 M! o: k6 F/ ^% _+ ^2 x
def deal_hand(shoe):5 {% n d1 @9 D5 @
if len(shoe) < 6:
7 e5 y. G9 z% r& v2 ?$ x shoe[:] = init_shoe()
9 ` r; S6 L9 Y4 T% R return shoe.pop()
- f8 g0 k, p6 S2 Y2 P6 r, W2 j
# 模拟下注法 A
; b4 t0 E- _0 q' M8 s6 i( @def simulate_strategy_A(num_shoes=1000, commission_on=True):
! B0 ]2 k- i8 @6 a- V8 ]$ W6 g profit = 0
, a& ?0 g* A! ~( [( z commission_paid = 0
) `5 N. C! S9 ~: m2 ?$ n shoe = init_shoe()
( D6 A, ^1 P# X3 M4 z; h6 n & y. |8 `1 L b
# 策略参数- i. d4 |" c9 l* V% B
sequence = [1, 2, 3, 5, 8, 13, 21] # 示例进级
) b* P/ I/ l- B9 T8 w stage = 0$ Z( K* K6 H7 Z# ~) U! S
target_side = "B" # 起手投注庄, {4 Q2 R% n+ ~
9 U) h. R. o# P; W
while num_shoes > 0:
: r. c6 a+ a+ |1 A5 } result = deal_hand(shoe)
% I, e3 K$ G, [
, }; S* {7 \; M4 V: }7 o if result == 'T': " p* g s0 A6 U. _* l1 c& x1 b1 l
# 遇到和,不输不赢,重投
/ {# U1 x8 ~3 W$ A5 [* V continue* t: K2 u' G/ |
, x- d* h: u1 b+ Z. I+ {; K( p' R
bet = sequence[stage]
$ h0 ^- p2 {, t8 p' S2 T" u! T' `
, T M) O# o8 a3 _3 R3 i$ n$ A if result == target_side:
* `/ C4 K8 W# F # 赢* K& ~6 C. \4 E% X
win_amount = bet
M9 ^# T7 T( e1 ?, Y; e8 x ]! d if target_side == "B" and commission_on:
0 S# ], b4 a& v$ k( l+ I& ^; m win_amount *= 0.95 # 庄赢扣5%抽水 S1 s, N/ w) t8 R: D1 ]
commission_paid += bet * 0.05' G) \' C5 y+ c* B, z1 e4 N: B: g8 i
profit += win_amount
! z4 r4 F7 Q# k. Q$ ~( T. a stage = 0 # reset
" E% G$ }0 [) J* B target_side = "B" if target_side == "B" else "B" # 固定庄(A策略固定)& V5 r' C) W4 ]5 K* ~
else:
( C/ K( O* v% G: F # 输
+ Q9 k& x; H7 Y( ~ profit -= bet
' X* i9 x& l1 V6 Q5 W7 i; h- Z stage += 1
# `# g' H6 T% e' C; o if stage >= len(sequence):. y8 g! D& s; c5 B
stage = 0 # 断缆reset
! Y x- Y1 _$ X num_shoes -= 1
! C1 r/ a3 x$ ?# y
r' F$ O9 s+ `' F8 W return profit, commission_paid1 w$ Y" R) j& A: U7 H
" K4 B9 o- ~9 C8 }# 设置命令行解析4 Y5 L1 l- b! r: K; q) o9 U* L
def main():0 u {7 V$ S6 C S3 Q$ l% x
parser = argparse.ArgumentParser(description="Simulate Baccarat strategy with commission on/off.")
& R! t7 A: X# F( l. l+ S parser.add_argument('--commission', choices=['on', 'off'], default='on', help="Enable or disable commission on banker wins.")' {4 b ?! h1 a0 ]; C4 ^
parser.add_argument('--shoes', type=int, default=1000, help="Number of shoes to simulate.")
% c5 `5 I4 P5 N. k ' r& K7 A- s$ S' G8 L8 h' f
args = parser.parse_args()1 B( j3 u) F; d; Q/ F, q# w
8 u) Q1 D, n4 |) l # 抽水开关:开启或关闭) k8 u1 e7 P9 x4 W% F
commission_on = args.commission == 'on'; Q' P& l: K; m2 V1 I
8 I" Z+ N; \$ D result, commission = simulate_strategy_A(num_shoes=args.shoes, commission_on=commission_on)" K5 h0 F. ~5 ]5 G' J! a4 c" p9 U: B" R
print(f"最终盈利: {result:.2f}")
* L4 D' _4 z& g6 @8 k print(f"累计抽水: {commission:.2f}")1 r, G, Y; ~& ^+ o7 a4 \) T( R
% L8 | K2 z! Q" x
if __name__ == "__main__":9 E( F9 l1 |9 `% G
main()
+ e# c3 C8 ]; J* y/ ?5 H; i$ {- V" J1 R. P6 f
* k! M4 w; s N' r
步骤 2. 运行
" @: b9 ~& J7 q2 C" ^* v% e/ H- s- W0 g
在命令行里进入文件所在的文件夹,例如:
& e$ L ?3 r$ _1 C2 v0 wcd C:\Users\你的名字\Desktop" e/ W- P2 g* V% B% P2 m
python baccarat_sim.py
+ f/ H/ f2 }) {. I5 X! H$ z# k5 S8 V- ~5 g9 R; h' C
输出会显示:
! b+ R( z: {* d/ W) e! d0 D8 j0 a+ \+ W. K# ~# j
累计盈亏: xxx
$ Q' s; ~+ m0 e( [+ u' g累计抽水: yyy R" e* d- [4 e6 M) N
-------------------------------------# b$ f6 @4 ?! q
实例:试跑3次,
* }: `7 S/ s. G4 A# kC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
8 k. m4 X% e- d5 |. ~& F6 ^: ]4 q最终盈利: -5360.35 * g/ O9 z& m8 P6 @3 a4 p' G
累计抽水: 5176.35
0 m; _- a+ O* f# Z) PC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
5 t" q! ^' v( D" ]最终盈利: -5661.65
+ ~1 S' ~( Y* a r; p, g累计抽水: 5174.65 7 e n* z6 t0 k: `$ ]. H) x
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
9 K/ Q3 U, i' f# [ ~最终盈利: -4244.50 ' ~* Q' g* W$ k: Z4 W5 ~7 \
累计抽水: 5176.50% ~- N9 W- M% b' I" S6 V
3 I9 b4 A9 f0 h: ~; f说明你的 Python 已经能正常跑模拟了。结果也很有参考性:' d7 u* l. t7 b: c0 g
' {6 y6 S7 y/ a- A; B3 V Z9 _) c
累计抽水固定在 ~5175 左右 → 这和你设置的「抽水开关 ON」一致,因为你每手下注金额相同(例如 8 单位),程序是按 Banker 抽 5% 计算的,所以长期下来,抽水会稳定在一个范围。
5 W6 E% W1 K4 r% K, `' Y
( O& o: ^' ~' L8 r* z最终盈利为负数(-5360、-5661、-4244)→ 这说明在 100,000 局的模拟中,哪怕加上和局不计,下注方向固定,数学期望依然是亏损。2 p* k& G- P% A0 h8 H9 T
这条缆不能直接用,用了会输。必须改缆法,或改缆法并且改下注规则。, A) L( N" s& V! a$ B a
人们喜欢举例盈利,有吸引或牛逼的效果。。。用亏损的例子,可以真实告诉你,道阻且长不容易。
, F+ ^- F) N$ a2 x+ ?( @但是别沮丧,办法总比困难多。只是,你自己悟的,是最好的。
/ S- q) \. U0 I" ? s5 W& |
6 c& d5 t# _2 O5 z' h6 [% }5 I启发,,,可以变更缆法,改变庄闲比例,指定胜负路。。。。(待续) |
|