|
|
楼主 |
发表于 2025-10-31 11:15
|
显示全部楼层
本帖最后由 Banker 于 2025-10-31 11:17 编辑
3 L3 j8 Y$ p8 `* i
! ?! a" J9 m4 N6 ?) w& Q, |+ A可用Excel,逐手模拟过程(但 Excel 跑不了 100000 靴,会非常卡)。6 j* j7 D U; p! `$ n5 L* h% }
Excel 更适合 直观小样本测试,Python 才能跑大样本,Python 可以试试N万-1亿靴,10亿靴,有没有没必要?你高兴就好。4 c# \6 \* \# \7 A* K
* F+ c, q2 R1 Q" }
在你电脑上运行 Python 模拟器 (版本3.0以上,若没有,在Python官网下载安装)
" \* [9 m- X# {/ g2 C! G假设你已经安装了 Python 3.x(在命令行里输入 python --version 或 py --version 看看有没有)。
( x( \# t) e5 G% ?) q4 n先写一个最基础的 百家乐投注策略模拟器(自己定义的规则)。
2 u' I* ?. R; d2 ^4 y; t; z9 q$ `5 W: V) j- d, l, J& h
步骤 1. 新建一个 Python 文件
$ N; g. O- z$ E9 i* C! y- V. s6 `3 q打开记事本(或 VSCode、Notepad++ 都行,我用记事本)/ Y X3 f8 `! V7 l \+ T
把下面的代码复制进去。
( ]" N4 L/ S4 u" E# S: w: W保存成 baccarat_sim.py (注意后缀是 .py)。
9 o1 [4 ?% L8 y( j: ~8 ^. a1 S7 R# K# x/ ^
import random
& P1 t6 [+ b4 wimport argparse
6 @8 }8 I0 G2 O3 s" J
% |' o: n) C4 A+ |/ F1 }! c, }# 初始化鞋子
* L1 |3 @3 v3 L: M3 W" ]( k- o6 Y2 V4 Qdef init_shoe(decks=8):( V2 G% }* i# c) k8 _
# 每副牌52张,8副共416张
X' @: x* Y/ c9 i$ ?! _& O shoe = []7 d& a9 I" j9 _) {8 ^: o/ b0 D
for _ in range(decks):
0 _* Y. V9 n& D0 K* x8 l shoe += ['P'] * 24 + ['B'] * 24 + ['T'] * 4 # 简化:庄24, 闲24, 和40 x4 g" }* q& ] y4 u
random.shuffle(shoe), `8 I2 k0 R' D
return shoe
3 c1 Z; t3 W' |3 u1 P) {6 g7 c; O' q; j$ ]3 d7 m5 m
# 发一手8 q% J( h+ `/ ^* `, }0 m X
def deal_hand(shoe):
! Z" B* ]/ w/ D3 _0 U/ s9 A: I if len(shoe) < 6:. k# f: F! ]8 i% L% C% j' u5 I; X
shoe[:] = init_shoe()
# h0 i, b" Q9 [6 C0 X return shoe.pop()9 n, M9 w1 h( z" t! c5 z0 ]
; ^7 H) k) L) j; C5 V }# 模拟下注法 A
7 M5 I+ y' \6 v) @/ g6 Gdef simulate_strategy_A(num_shoes=1000, commission_on=True):! o, W/ E+ d# I$ A
profit = 08 J: _. v0 f! v" c
commission_paid = 0
- d X; u, T* q$ i! q. p7 M shoe = init_shoe()
% a1 g8 N# J# ~5 C! S9 I& D7 a
# R# y! `& c* M8 v; M # 策略参数3 z6 i. d' I9 g0 Q5 V, e, X' Y8 N v
sequence = [1, 2, 3, 5, 8, 13, 21] # 示例进级
i" Y6 B5 j' o8 U6 l$ }4 \ stage = 0; G* Z9 `& E6 L% l- j$ x1 f
target_side = "B" # 起手投注庄
y9 j1 g0 _+ u# j6 w5 }* z6 N5 t( {
while num_shoes > 0:
+ t" ^, q1 O( u& u( c1 ] result = deal_hand(shoe)
0 _4 Z: e9 Z7 j: s4 b! r3 }7 y m8 I
8 k; s9 ~* U1 s/ l6 p2 P' l. s if result == 'T': ) {' `, {$ T& C8 \- L' G& V' Q
# 遇到和,不输不赢,重投6 F. D! p& b1 K' W" K1 E) s
continue
% L+ [8 P9 A- Q9 } ^6 V5 n# @' {: P
bet = sequence[stage]
$ j3 H$ X/ w/ E+ G5 E. n+ p0 W
; _9 z+ G' d. n if result == target_side:
2 v# W5 x5 X$ M. n9 J+ ^ # 赢3 ^% z" g: f6 C, K. S- F. i
win_amount = bet
" t, M. w4 R8 o, e( z, A if target_side == "B" and commission_on:+ \; v: r& T* B- D+ b/ R6 K. m
win_amount *= 0.95 # 庄赢扣5%抽水
Q$ e6 g# E' W4 Q commission_paid += bet * 0.05
& w/ B* F& W& D* W' } profit += win_amount
, N- k5 I: P& L6 T0 y4 p9 Y stage = 0 # reset2 M- x/ V, T* h+ I/ R
target_side = "B" if target_side == "B" else "B" # 固定庄(A策略固定)
7 v" v# C: r9 L+ N3 `# Y+ m else:4 V4 W0 c g, D. p( {
# 输
. _( r4 |+ H# U5 h3 O- p profit -= bet* `1 f* v c; g- V
stage += 1$ F0 E, X& u) w; {) m
if stage >= len(sequence):
4 E6 R* e/ t) s3 J4 r7 B stage = 0 # 断缆reset0 K/ \" ?7 D, |! W* T
num_shoes -= 1$ [; j9 W, q5 g
0 f* T5 n* j; T3 l0 x- Q. z return profit, commission_paid
! ?' O" `& b* w- C# e, m
" p, C6 T$ o+ L5 f# 设置命令行解析
' N# v- a( F+ ?: X! Edef main():
! D* _" S& R% F, F parser = argparse.ArgumentParser(description="Simulate Baccarat strategy with commission on/off.")3 E. _0 Q7 T- p
parser.add_argument('--commission', choices=['on', 'off'], default='on', help="Enable or disable commission on banker wins.")0 m. `) a0 ]) a% N m9 L, q- g
parser.add_argument('--shoes', type=int, default=1000, help="Number of shoes to simulate.")
/ G7 u4 Z9 f* n2 n% Z2 A
6 i+ H. \2 B; A/ p args = parser.parse_args()/ V; V+ f" z/ K1 ?" A
' p$ ~5 z) P7 E+ F4 a
# 抽水开关:开启或关闭
6 f4 ?+ R( r7 X- a9 e" x+ d4 ~ A commission_on = args.commission == 'on'# @+ W5 u, N5 d' a7 Z4 N
# j' l9 y. J: ]
result, commission = simulate_strategy_A(num_shoes=args.shoes, commission_on=commission_on)4 Z7 x+ i( p8 w
print(f"最终盈利: {result:.2f}")" d. f5 M9 b+ T
print(f"累计抽水: {commission:.2f}") S2 c8 b, n3 K" D# A" d& a
6 ?5 n- Q) o; U, P; j5 g
if __name__ == "__main__":
2 f) {6 J4 c- T" X7 q1 ~- Z5 l9 t main()
( m& ]: E; N5 A: |5 X, W, L5 b" p/ ^
, c- Q3 Y; {6 b, M5 J步骤 2. 运行& ?3 n9 j" S: J
* y7 ^+ L- p- A2 V( K
在命令行里进入文件所在的文件夹,例如:# ~8 U) z1 q% d9 r! q
cd C:\Users\你的名字\Desktop1 A) d& c! u/ E6 D" @- h
python baccarat_sim.py; l8 D9 o+ d' d, v
% m- s, ^+ M {% h* v; `. [输出会显示:0 r* m( }0 ~* W; Q# O
) E1 r4 X, D( K: P2 n! S2 K累计盈亏: xxx( {6 X/ K# P" N6 i
累计抽水: yyy! R1 {- z. h- r; X: s$ `. [
-------------------------------------& |, n. `) p/ o
实例:试跑3次,
( N$ Z- h: P: x& G* `$ N! o, HC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py : ]3 ~. N V$ h4 C' [
最终盈利: -5360.35 1 Q0 ?1 _3 b& j. C6 \5 Y
累计抽水: 5176.35
* O4 }- P/ j. k/ k9 sC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py : l: \# x! H- f) P' l. f
最终盈利: -5661.65
: z: F8 r5 ^' [% F5 ]4 D累计抽水: 5174.65
0 x+ W5 T: e7 V+ Z* u0 I7 h) i1 iC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py 6 L% y1 ]# L y4 M- n9 c" Y I1 p
最终盈利: -4244.50 3 `+ c( M# u* T# {) \: O
累计抽水: 5176.50% E4 U. x7 h+ Q
0 \/ E. d9 f, `# c3 I# |
说明你的 Python 已经能正常跑模拟了。结果也很有参考性: i& l& J, i# ~( E3 X
5 `4 w* P" g+ B累计抽水固定在 ~5175 左右 → 这和你设置的「抽水开关 ON」一致,因为你每手下注金额相同(例如 8 单位),程序是按 Banker 抽 5% 计算的,所以长期下来,抽水会稳定在一个范围。3 N7 g3 d% W! }; R: L- e, ~
0 K+ N& |. B& H& H. b. t
最终盈利为负数(-5360、-5661、-4244)→ 这说明在 100,000 局的模拟中,哪怕加上和局不计,下注方向固定,数学期望依然是亏损。$ O, \4 _+ d _, O/ U! h
这条缆不能直接用,用了会输。必须改缆法,或改缆法并且改下注规则。' ], b( w$ o# b# @ E# |
人们喜欢举例盈利,有吸引或牛逼的效果。。。用亏损的例子,可以真实告诉你,道阻且长不容易。" c t, T4 B: H1 i
但是别沮丧,办法总比困难多。只是,你自己悟的,是最好的。9 @8 P6 q$ L5 H/ J. D
3 x; y. w( }' {. _
启发,,,可以变更缆法,改变庄闲比例,指定胜负路。。。。(待续) |
|