|
|
楼主 |
发表于 2025-10-31 11:15
|
显示全部楼层
本帖最后由 Banker 于 2025-10-31 11:17 编辑 ' r: j, W' \7 f0 P; O( o
6 t/ J* f; t6 x4 k* w$ f6 X9 \
可用Excel,逐手模拟过程(但 Excel 跑不了 100000 靴,会非常卡)。( q. K+ U9 ^8 u- } z$ H* p" Q5 M9 H
Excel 更适合 直观小样本测试,Python 才能跑大样本,Python 可以试试N万-1亿靴,10亿靴,有没有没必要?你高兴就好。4 W, W; m8 @+ O6 s& e& Y
, L6 I, m5 N ]
在你电脑上运行 Python 模拟器 (版本3.0以上,若没有,在Python官网下载安装)* a, p @6 H: p
假设你已经安装了 Python 3.x(在命令行里输入 python --version 或 py --version 看看有没有)。5 Y: g! @% n% ?% y
先写一个最基础的 百家乐投注策略模拟器(自己定义的规则)。7 N# v1 b* y% X& {0 h
( P5 {% a7 c: D8 e6 ]' k
步骤 1. 新建一个 Python 文件
& T4 d2 K7 z, a) b5 d打开记事本(或 VSCode、Notepad++ 都行,我用记事本)6 X8 l/ m2 u2 N% M# k F7 r' s* j/ W
把下面的代码复制进去。
t- }6 }# u& a8 K0 U4 }保存成 baccarat_sim.py (注意后缀是 .py)。1 ~; P) s) I. ?) z0 {- K
( h% v. D7 A" Q. a& ~+ Q
import random
- c$ `! p5 }% r4 ^4 [* v; T1 Limport argparse3 U2 H/ x6 G+ }1 _
* Q7 g7 r* i$ Y0 \' l# ]9 W) {9 p# 初始化鞋子. l2 b( o5 G I) r, T/ N
def init_shoe(decks=8):! h9 C8 X+ F& C% O
# 每副牌52张,8副共416张6 ~3 a+ L: J6 p! ]
shoe = []
9 L2 R) x* s5 z' s- {' c* Y for _ in range(decks):
0 F3 [% q& r0 R# r, X3 s% m shoe += ['P'] * 24 + ['B'] * 24 + ['T'] * 4 # 简化:庄24, 闲24, 和4
; x R5 V/ i. j- M random.shuffle(shoe)
" o. O4 o. V7 o5 S7 r9 { return shoe9 {0 i; N4 |3 F% a4 Q3 _; a' w
, |) R- [# x$ H; x
# 发一手- j' f8 }. x0 d, g
def deal_hand(shoe):2 o- X3 r+ r" O; ]$ P
if len(shoe) < 6:2 L! }+ {: C# G. t* V! A
shoe[:] = init_shoe()
+ P0 C: P' G& @1 {- P' D; E return shoe.pop()
* y9 J% w- x/ D) b: X) y. `; G* Y& _* @. H/ h" Y
# 模拟下注法 A
+ e5 }# s% m _/ q7 \& }: pdef simulate_strategy_A(num_shoes=1000, commission_on=True):
: X: L) ?, k1 q, o- f profit = 0
% { E- F8 }8 @; f) ~9 ?' V. F6 D commission_paid = 0
# O1 G: @0 D, e6 u2 F shoe = init_shoe()% M% C. R- T; C5 L6 W! B' F
9 G9 c' q P2 C3 j. Q
# 策略参数' M4 Z$ y+ W' c7 h
sequence = [1, 2, 3, 5, 8, 13, 21] # 示例进级
- D* h9 O2 c. H' n stage = 0
, e: f' }! V2 G" C target_side = "B" # 起手投注庄) W3 K6 D$ D7 {: q' J
# W" |7 S, l! N- E. m; p _ while num_shoes > 0:
8 h8 c0 d" Y- ?& e' C6 a" b6 W result = deal_hand(shoe)
- H- t b- U @0 A; X
2 m, o- L* y R: J5 }- Y3 e: i if result == 'T':
' u i' ^2 {, u9 E0 B# c # 遇到和,不输不赢,重投
9 E9 [4 W' Z" G) H: D9 q4 W/ F continue
0 C) U2 V2 }7 D# X. H: D0 z/ I: g' T/ |) Q0 V% m
bet = sequence[stage]6 S8 ^4 D0 V6 ~$ d- Q! c9 N
" d3 A9 L6 ]# x+ ~ if result == target_side:" p S5 r4 x! \4 p
# 赢
* e( j1 C0 C! y' a- f7 h+ |9 y win_amount = bet
2 G2 e+ v) _1 k8 [9 s6 W! M5 O4 A7 Z7 q/ { if target_side == "B" and commission_on:$ V5 a2 Z# M+ g; K: R- s5 R; J
win_amount *= 0.95 # 庄赢扣5%抽水/ |5 U G3 a j: y1 O
commission_paid += bet * 0.05
& Y( z) C( z* L& T' v profit += win_amount
, B3 _1 e& ~, i1 E7 ^ stage = 0 # reset
0 p& Y0 ^( g1 p: N8 { target_side = "B" if target_side == "B" else "B" # 固定庄(A策略固定)
! I8 p) n/ L! s% x) h: a else:
7 t; d, I7 i( \+ [- B5 j g # 输9 n& {% E: A; t' u6 a# f# B
profit -= bet
" N+ c5 u, x# i9 a t! I5 b2 U# ` L5 ~ stage += 16 M$ [7 n' Z. Y& }" k" |
if stage >= len(sequence):
; \7 g+ M$ c# y& l# L% Z; e stage = 0 # 断缆reset$ v6 s3 N4 {+ X3 A1 q: R3 Z: m8 W
num_shoes -= 1
+ `7 O' z1 q1 w" I' L: d7 s1 J. F! n+ r/ F5 S v& o9 ^
return profit, commission_paid
`1 D* e" D, a; X& b& o5 j, f x3 x, t
# 设置命令行解析$ l# ~2 k4 j# k
def main():
' Q9 _% ~) _$ y. m parser = argparse.ArgumentParser(description="Simulate Baccarat strategy with commission on/off.")
& E6 B' w0 z1 R, }' S parser.add_argument('--commission', choices=['on', 'off'], default='on', help="Enable or disable commission on banker wins.")
, ~* e2 y$ x! G, f1 p) s7 X parser.add_argument('--shoes', type=int, default=1000, help="Number of shoes to simulate.")# N9 G, i$ u( }- |: G9 p3 {% M- }
, q' C& D$ {6 E
args = parser.parse_args()% D# @% X0 k% y$ f. q
( O5 U9 A9 p) y- O* {: ~; t # 抽水开关:开启或关闭0 g8 C4 Q' k) w
commission_on = args.commission == 'on'
) v7 W% J( }9 d6 L+ U7 J 6 d( ~+ e" k7 _% V
result, commission = simulate_strategy_A(num_shoes=args.shoes, commission_on=commission_on). F9 ^ N' o& m% Y& R
print(f"最终盈利: {result:.2f}")
9 \2 c9 X7 Y3 k4 K2 B print(f"累计抽水: {commission:.2f}")
. _( j3 u% p( y0 X% v% T( E; i' y9 Y; y5 G+ R# W4 T
if __name__ == "__main__":: F& J, q0 T8 t, V. Q9 R; i
main()* | U1 ?9 q# h
0 O8 ^) b7 `4 B- p' ]4 m
2 l6 \) {/ H4 L; y# `( M, K u, j, _' ^步骤 2. 运行8 X4 [8 ]8 g& J: V
( [7 s6 Q0 b/ Y/ ^在命令行里进入文件所在的文件夹,例如:
* B+ W& P( t0 Tcd C:\Users\你的名字\Desktop
0 D% U' A3 V8 V& c( a, Apython baccarat_sim.py
5 L5 e c" h6 E. j/ D) B9 y. W% Y
6 x2 f* ~7 ~3 }输出会显示:# ]3 R1 G c, q+ p3 d
" O: R5 f; f, S* `/ a累计盈亏: xxx
( {$ H6 \. t8 s! b2 c% C6 Z; e7 m- t累计抽水: yyy
$ d1 ~: Y! i5 C3 l! L7 E-------------------------------------" a6 ?8 y) @. `$ T& X
实例:试跑3次,
' {9 j- h3 k ^2 A! S" eC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
# Z3 U' P2 }% K1 N2 u最终盈利: -5360.35 & H7 U9 X7 W+ J8 ~
累计抽水: 5176.35
8 b5 L* d7 o; \: E3 L @; OC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
* T7 M1 \+ p" ^; T8 K最终盈利: -5661.65 0 v$ D% K p/ D% }; ]
累计抽水: 5174.65 8 c. d2 w( V) @4 N- N1 _# Q
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
' ~2 g- d+ `% i$ W3 |最终盈利: -4244.50 , G( P+ e1 O5 A
累计抽水: 5176.50
2 t5 ]7 E' z4 g1 c: r7 ~
* ~7 k. X( Y0 U0 @% m" E说明你的 Python 已经能正常跑模拟了。结果也很有参考性:; B9 ^- e& d5 _5 F. k, S$ R4 D' d$ A, X
$ O+ P2 O7 e M( H% I8 ?4 x1 h
累计抽水固定在 ~5175 左右 → 这和你设置的「抽水开关 ON」一致,因为你每手下注金额相同(例如 8 单位),程序是按 Banker 抽 5% 计算的,所以长期下来,抽水会稳定在一个范围。
1 p2 E* f) T* D
6 c0 d& @: }5 h6 x% B5 S最终盈利为负数(-5360、-5661、-4244)→ 这说明在 100,000 局的模拟中,哪怕加上和局不计,下注方向固定,数学期望依然是亏损。
2 z& e9 _: f. z" Q6 I这条缆不能直接用,用了会输。必须改缆法,或改缆法并且改下注规则。
/ ^3 e, |) \3 p `人们喜欢举例盈利,有吸引或牛逼的效果。。。用亏损的例子,可以真实告诉你,道阻且长不容易。
4 {: p. j4 E6 u- e( H但是别沮丧,办法总比困难多。只是,你自己悟的,是最好的。
. F0 b5 e9 e0 v" J6 N( t( O7 b2 N% I% _. C
启发,,,可以变更缆法,改变庄闲比例,指定胜负路。。。。(待续) |
|