|
|
楼主 |
发表于 2025-10-31 11:15
|
显示全部楼层
本帖最后由 Banker 于 2025-10-31 11:17 编辑
4 H( L% Z0 L* @5 Q8 L" V- I# Z/ L# y. U+ L
可用Excel,逐手模拟过程(但 Excel 跑不了 100000 靴,会非常卡)。
9 w( B% g& @! E0 t) t7 c/ aExcel 更适合 直观小样本测试,Python 才能跑大样本,Python 可以试试N万-1亿靴,10亿靴,有没有没必要?你高兴就好。
+ ~8 {' D! }0 r
/ g! d. K4 p% d4 d0 @; H* O在你电脑上运行 Python 模拟器 (版本3.0以上,若没有,在Python官网下载安装) M6 d r$ y, K( d
假设你已经安装了 Python 3.x(在命令行里输入 python --version 或 py --version 看看有没有)。
. a% x% L, G6 a先写一个最基础的 百家乐投注策略模拟器(自己定义的规则)。0 d$ H; T; d- F. `; D
% m+ ^, ~9 \( k7 y+ S3 A' _步骤 1. 新建一个 Python 文件
4 ^6 e& ~! b' @0 M0 j4 u$ N5 ], X打开记事本(或 VSCode、Notepad++ 都行,我用记事本)
, V3 m6 U: w, ], A把下面的代码复制进去。
6 G0 t( n( t/ H1 m8 ^6 i$ {保存成 baccarat_sim.py (注意后缀是 .py)。$ b2 V" q" x/ }8 U! |8 _1 X4 w, ]
% ]$ m8 f7 \2 W7 [+ z9 r
import random# L: I; u- W! b3 A/ \( E
import argparse. E( Y3 V, V9 W$ @7 \; G4 k. l) I
" a# m/ d5 G/ Q: Z: p4 J% W4 w5 P# 初始化鞋子( h, t! w$ @ r! p8 O) ~! Q& [
def init_shoe(decks=8):
: X1 y+ {4 O" n8 k" N # 每副牌52张,8副共416张
( h: P, [- e& X& F0 z shoe = []
}, d+ v. c9 [ for _ in range(decks):
3 B% ?+ ~8 g$ S6 F shoe += ['P'] * 24 + ['B'] * 24 + ['T'] * 4 # 简化:庄24, 闲24, 和44 Z8 s* u# u) e: m- ^2 T% q) Q
random.shuffle(shoe)
' _: ^& ~# H- c return shoe
2 R4 x0 S c0 ` U1 k
# b$ H: `9 A# N7 K# 发一手# f! x% H9 N5 l( @" J7 B. T, F6 Y
def deal_hand(shoe):1 a, N- z8 ~* \- Q. d
if len(shoe) < 6:
- v8 r; x# m/ i/ L/ `2 n shoe[:] = init_shoe()
6 e+ y9 {: B5 Y0 Z return shoe.pop()
6 l6 U- A( L% w* j/ {& q% _* N+ o+ i& [% Q* h# J
# 模拟下注法 A
+ w/ s" h/ M# G+ N: I! }# @1 g5 sdef simulate_strategy_A(num_shoes=1000, commission_on=True):
: L* L: U6 x$ ]0 X" D profit = 0
8 L, _" |2 c# x( P% ^4 g commission_paid = 0
I2 Q6 W4 I, h, x, z shoe = init_shoe()( L& |6 D" m6 r. ?. g
( e5 J5 ~+ I8 _
# 策略参数: \: o S1 H5 B
sequence = [1, 2, 3, 5, 8, 13, 21] # 示例进级) o6 c2 u3 n+ v5 z$ \% Z) G3 A- }/ g
stage = 0
# M: S5 F2 n6 b K target_side = "B" # 起手投注庄 ?* U7 k$ \% ?8 y- G& m" Q
( }( f6 o7 j5 g" |9 @9 h b# M while num_shoes > 0:
A' y2 c4 x: a$ B result = deal_hand(shoe)
c/ P6 g% \/ V( H1 u; R
3 h3 p: Y# R1 }, b% v if result == 'T':
/ q' O" |+ {1 F1 d) ] # 遇到和,不输不赢,重投# R. w2 x2 U9 q+ W# C! }
continue
. J1 O3 k0 H& m2 P u4 u2 Z& M, Z% T' B T" [
bet = sequence[stage]+ _- z- F% y( E% S C* V/ S
2 G# @ U& B D if result == target_side:' m6 H& S2 Z& [" c% R
# 赢2 [5 L1 ] b2 t( h% e5 w; m
win_amount = bet$ h. _# p1 v5 h
if target_side == "B" and commission_on:5 A/ [& j: C; g
win_amount *= 0.95 # 庄赢扣5%抽水
, K/ J9 f$ [9 H commission_paid += bet * 0.05
' Y4 `' q0 Y4 [, e profit += win_amount: v" F. B' x! g+ u
stage = 0 # reset
# @+ _& m" W( V% [' A9 ? target_side = "B" if target_side == "B" else "B" # 固定庄(A策略固定)- Q$ h0 r& d+ {6 J7 `- d
else:9 K, k/ l1 p4 z6 T/ T0 \
# 输
; q4 B, `( m" K profit -= bet
( `0 `$ t( x$ d$ H. P stage += 1
, w( W4 |6 e: D Y0 h! L if stage >= len(sequence):
2 N# @, n+ v& M l6 V9 n9 x" ^ stage = 0 # 断缆reset6 e% @3 G7 E% R
num_shoes -= 1
; T' {, a$ O; C
8 y6 y% X7 R3 f return profit, commission_paid
0 a2 @ n$ y* ?6 E) c& |% B" y& B5 x5 D( }' D: |& |
# 设置命令行解析
, l9 N3 Y8 x6 m# m! L+ g4 Kdef main():% ^' o7 p6 o3 M' T! a
parser = argparse.ArgumentParser(description="Simulate Baccarat strategy with commission on/off.")
9 |* F! ]- H$ P# V5 `% F3 { parser.add_argument('--commission', choices=['on', 'off'], default='on', help="Enable or disable commission on banker wins.")! B) l6 J8 ~8 t1 t
parser.add_argument('--shoes', type=int, default=1000, help="Number of shoes to simulate.")
4 V* H! w+ U% x) L5 N2 a , C7 Q$ Y5 _6 ^9 h' H: y, j" r# K
args = parser.parse_args()
, e9 u: ?& W3 y $ C# ~+ J" L$ D& T/ U
# 抽水开关:开启或关闭
- f7 U* S) S+ _" y( ? commission_on = args.commission == 'on'- ?- X& f3 |8 G5 S2 A2 R+ a2 N
5 b$ v# V* T4 R. f) Q$ l# w% r
result, commission = simulate_strategy_A(num_shoes=args.shoes, commission_on=commission_on)0 n; k8 Q. q: [$ W7 b5 [2 X
print(f"最终盈利: {result:.2f}")! R/ |3 {/ d: r
print(f"累计抽水: {commission:.2f}")- P v$ B v5 S6 h; ]2 s
. k+ c: j* h: {- fif __name__ == "__main__":3 Q* [$ U( v; v8 [7 h- B
main()
3 m& u0 T0 u- z5 m3 h
' C& i: Z2 h8 u( [1 r1 H) V) N# }$ ^) Y7 R+ w: [) O
步骤 2. 运行9 s% x% @1 m$ z( Z# e+ p% w
8 k% ~# P3 v9 x: h4 B3 j
在命令行里进入文件所在的文件夹,例如:3 d* `3 n. c% X# P
cd C:\Users\你的名字\Desktop
3 \! J8 A6 r( G" W' u; epython baccarat_sim.py
! Z+ }) D" b8 b3 L: C3 V$ W( f. \
( I' s4 V' O- ]输出会显示:! S8 o+ I+ M7 u5 U$ w
1 G! S. N& \' D+ D: A7 M2 Q9 R! x累计盈亏: xxx9 K2 f* L4 b4 l. G+ u
累计抽水: yyy5 |3 G6 c4 O, t/ u# s
-------------------------------------
! h2 |! _# Z( q( ?7 U实例:试跑3次,
% w1 z, \5 z5 i: T0 H% JC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
/ C% @! c' n i. X0 P最终盈利: -5360.35
N: U! \, G, {5 D K: L累计抽水: 5176.35 " P9 Q4 P. O, X M
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
! o' e. F8 w9 g; R最终盈利: -5661.65 4 H4 R- \' X1 z4 j
累计抽水: 5174.65
; w( R2 k1 J' G/ e1 ]( ^, WC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
7 C% i- J( P8 \最终盈利: -4244.50
! ~- ?7 [ h+ c/ @3 o! H& N/ v累计抽水: 5176.50
4 r+ J6 Z: U/ \& X/ T3 N5 F+ B' D' m/ W2 @% T$ j/ z1 }/ k0 Z
说明你的 Python 已经能正常跑模拟了。结果也很有参考性:
% X4 {' W. Z1 |2 N& ~- J3 H, y. ]5 }# x" [8 A8 F
累计抽水固定在 ~5175 左右 → 这和你设置的「抽水开关 ON」一致,因为你每手下注金额相同(例如 8 单位),程序是按 Banker 抽 5% 计算的,所以长期下来,抽水会稳定在一个范围。
) b' t2 s% j& Q1 V7 Y2 z
% g6 f2 A. R1 H8 q" d% g+ ?% H P最终盈利为负数(-5360、-5661、-4244)→ 这说明在 100,000 局的模拟中,哪怕加上和局不计,下注方向固定,数学期望依然是亏损。
* S. G' W7 Q& F' K$ M$ e# S9 g这条缆不能直接用,用了会输。必须改缆法,或改缆法并且改下注规则。
" i/ \0 O" n. F& G人们喜欢举例盈利,有吸引或牛逼的效果。。。用亏损的例子,可以真实告诉你,道阻且长不容易。
2 n" _ r1 ^- W4 E0 y但是别沮丧,办法总比困难多。只是,你自己悟的,是最好的。
" }) x0 c: Q, D) g7 c: g6 q9 D; S' n1 [% z/ F7 Y) S/ Z* `
启发,,,可以变更缆法,改变庄闲比例,指定胜负路。。。。(待续) |
|