|
|
楼主 |
发表于 2025-10-31 11:15
|
显示全部楼层
本帖最后由 Banker 于 2025-10-31 11:17 编辑
$ G/ e, h+ O/ Y$ _! @( V
0 d/ |& V( x) Z' A: x1 s/ X/ G& q+ @可用Excel,逐手模拟过程(但 Excel 跑不了 100000 靴,会非常卡)。
. o6 b$ b* }: R% B8 _# R. {Excel 更适合 直观小样本测试,Python 才能跑大样本,Python 可以试试N万-1亿靴,10亿靴,有没有没必要?你高兴就好。* I0 F' \# Q5 l: L0 Z, y
* h- U, F& U" N m1 E) E# \' A在你电脑上运行 Python 模拟器 (版本3.0以上,若没有,在Python官网下载安装)
1 }# C* x' t0 i4 s假设你已经安装了 Python 3.x(在命令行里输入 python --version 或 py --version 看看有没有)。' X# Y& F. y& G8 `9 j5 B/ }
先写一个最基础的 百家乐投注策略模拟器(自己定义的规则)。1 K) P2 o/ n! N& z7 K. l8 i
6 {$ \% |+ Q B1 N8 u
步骤 1. 新建一个 Python 文件
, o3 D9 S& g( l- Y2 J打开记事本(或 VSCode、Notepad++ 都行,我用记事本)# T. s3 D" R, ]& R$ Z
把下面的代码复制进去。
" t: t! n v$ U/ P保存成 baccarat_sim.py (注意后缀是 .py)。
, s0 Z' K4 c. |% k. w) N
0 ]0 H/ P" A7 o8 m9 Mimport random1 Z, l5 n% O: K7 m9 G4 Q0 {) h. R2 ~
import argparse
5 N, h8 I1 e5 H9 a% }+ H6 z& x. b* y T1 U
# 初始化鞋子
; m" y3 ^" n$ R. o! wdef init_shoe(decks=8):+ z5 f T6 ^" g: n
# 每副牌52张,8副共416张
' L2 |) ^* n2 T" g2 ? shoe = []0 n5 G! ^4 `$ R7 w/ f
for _ in range(decks):
+ D- o2 q) J* W6 K( f shoe += ['P'] * 24 + ['B'] * 24 + ['T'] * 4 # 简化:庄24, 闲24, 和41 q1 z" v9 Q7 o' w# ~) i
random.shuffle(shoe)
1 d' i! B3 \8 l+ _ m return shoe
7 U2 b6 \( y0 _9 E) M* X1 ^: B2 a% o7 b; M6 g7 i, u
# 发一手
; G1 \) {' x" k; ?' V* S* W8 wdef deal_hand(shoe):+ {9 E' |, F$ _$ A* ~4 e; z
if len(shoe) < 6:
' ]0 B% v l8 a% L shoe[:] = init_shoe()
& B T. g* l* ~ X return shoe.pop()
) I' C% P3 f9 N) @- T' |* l- L8 x6 p* |9 R" q% W) f
# 模拟下注法 A
3 M1 w5 A6 w G" Wdef simulate_strategy_A(num_shoes=1000, commission_on=True):
7 `1 a& b7 h; F8 }5 J profit = 0$ J( e( n) F& K W
commission_paid = 0
, M0 [; A3 j0 S$ H( E4 x6 v+ a shoe = init_shoe()
" G: f6 o% r3 J% l, @
" A/ i* \$ {: [8 [% T2 e+ @ # 策略参数6 l+ ?( ]9 ?7 k G- a
sequence = [1, 2, 3, 5, 8, 13, 21] # 示例进级
5 i9 T' @4 `7 R8 P3 \ stage = 0. S( t1 W" V) e8 _! }
target_side = "B" # 起手投注庄
U$ w$ b7 |% W, E# C. q# M: u- d
" s3 U( y4 R! Y* K# r while num_shoes > 0:
6 u. |; B* O9 I# J/ \' O result = deal_hand(shoe)
5 W8 V- X4 D/ N
7 e( g- l, ?0 u; A5 B) k/ b% [) I if result == 'T':
7 x7 |! A# T+ u # 遇到和,不输不赢,重投9 ]$ F e3 ^- x: @! T
continue
+ f8 r# e, D3 \5 R) M# i' p9 }9 k, F
bet = sequence[stage]7 w2 A7 F& q6 j- P( t! e( D
, Q3 b. ` q1 f if result == target_side:$ z+ r. c) y( {/ J$ {7 w2 T
# 赢
. P, v% f d7 M3 q7 v0 i. S win_amount = bet
( I1 Y9 p( g8 g if target_side == "B" and commission_on:
" u. U9 I( ]! {4 i9 g$ @ win_amount *= 0.95 # 庄赢扣5%抽水; y- L0 P3 c2 S6 Q
commission_paid += bet * 0.05. b! c6 r; G2 P6 _8 P8 T; y7 }- S
profit += win_amount3 }+ J1 }" x/ c; L: J
stage = 0 # reset
' D0 Z; f9 q% g! P target_side = "B" if target_side == "B" else "B" # 固定庄(A策略固定)9 o" y n$ j4 D. q9 b
else:
7 A6 m& `9 ~! y9 T. E( ` # 输: Y% x/ E y! N; J, h* G
profit -= bet
0 I* s6 ?2 B: ^, N stage += 1: S! B9 w7 y0 s6 ?+ y( i
if stage >= len(sequence):+ h0 h$ d0 N8 p* P2 a8 l
stage = 0 # 断缆reset
3 x* C/ u2 D0 ^3 A) J num_shoes -= 1
7 w9 k# W5 X: w b1 F; \ K; } U! }3 L
return profit, commission_paid4 K$ G, T( o _0 n2 Q! \
, F+ X: c" Z1 H- N" Y# 设置命令行解析. p' C9 G) Y/ V2 [
def main():7 I4 _+ l$ d: q) t
parser = argparse.ArgumentParser(description="Simulate Baccarat strategy with commission on/off.")
, X/ U2 m5 F. g8 x% Y8 E5 q parser.add_argument('--commission', choices=['on', 'off'], default='on', help="Enable or disable commission on banker wins.")
7 @. L/ z" E% E& o# \* t parser.add_argument('--shoes', type=int, default=1000, help="Number of shoes to simulate.")
- c8 a& H) A4 p0 t' k8 N , n5 v2 C+ P; M7 w3 `5 g2 {
args = parser.parse_args()
4 P" V) | Z8 M' R. ]
. N1 G% |8 j8 }1 [ # 抽水开关:开启或关闭
4 s' M2 s7 N( J, c# O- ]. ^ commission_on = args.commission == 'on'
! _* J6 J1 Q- F& b9 T/ o 9 i% Y+ d ?3 I, B# C% L
result, commission = simulate_strategy_A(num_shoes=args.shoes, commission_on=commission_on): c2 v2 c; l. y9 e% ?( s
print(f"最终盈利: {result:.2f}")
1 M: A7 s; i. U& L print(f"累计抽水: {commission:.2f}")
% K' n0 C" i: O+ |3 v; q0 K9 Z) C, C) d9 f3 ?: G9 l
if __name__ == "__main__":
( |6 L( z! a4 d1 c main()- v9 q9 P* u1 b8 y
y& H. U( e* h- y; s9 J
E3 X* f1 q3 ^" t' K步骤 2. 运行" i; ?7 L+ D5 i# d, J# _; @
( [3 R$ \4 l" }0 t# J5 q# G' ^2 i
在命令行里进入文件所在的文件夹,例如:
: p. W( u2 w6 \) }: w0 _* _cd C:\Users\你的名字\Desktop
/ r# K+ p$ ?& x- j; `2 Dpython baccarat_sim.py
, U/ t. O5 y( w G1 h' i/ i
+ F& b0 |' V* d0 p4 U2 b# t% k输出会显示:
9 z3 {) f8 a2 ^1 g
( X) y/ n0 X$ R0 v累计盈亏: xxx
) H/ A. N6 _* p7 d累计抽水: yyy
; _3 ?7 J5 m! t3 s2 g-------------------------------------. O# S; v+ v T1 C! E7 N
实例:试跑3次, - u+ J% `7 ?4 r
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py + p: a% T, E3 R- ~9 T" s0 c! d
最终盈利: -5360.35
' t A- h3 O% j% k累计抽水: 5176.35 5 f" i/ b2 j& z9 q$ n& u# a
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
& i2 k! d# K" V) B. v F最终盈利: -5661.65
" C) i7 D' \) f7 `! B+ I累计抽水: 5174.65
# m4 p5 P& W# ?( D+ Q/ ]C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
4 P8 \' ]+ u1 }- m+ C) T) ]最终盈利: -4244.50 6 `4 A0 C* ~9 T% @, H; g6 {4 Q
累计抽水: 5176.50$ y" l& ]5 _/ B7 k; v
3 p% Z* v5 @' l) p6 S说明你的 Python 已经能正常跑模拟了。结果也很有参考性:$ j3 m4 M5 d% x5 Z/ e4 K" ]; {8 v, N
9 r. M8 P* I# }& i% U
累计抽水固定在 ~5175 左右 → 这和你设置的「抽水开关 ON」一致,因为你每手下注金额相同(例如 8 单位),程序是按 Banker 抽 5% 计算的,所以长期下来,抽水会稳定在一个范围。' G3 @$ a" }/ }+ G. B: {
0 |9 n2 `' f, Y* a% G* V: D
最终盈利为负数(-5360、-5661、-4244)→ 这说明在 100,000 局的模拟中,哪怕加上和局不计,下注方向固定,数学期望依然是亏损。9 D! x; P; L8 h* H8 d* }
这条缆不能直接用,用了会输。必须改缆法,或改缆法并且改下注规则。6 b+ ]( c0 n/ v7 j* ?& p. f; J& [; y/ c
人们喜欢举例盈利,有吸引或牛逼的效果。。。用亏损的例子,可以真实告诉你,道阻且长不容易。
- H z% L. R9 A: q/ a4 X0 w但是别沮丧,办法总比困难多。只是,你自己悟的,是最好的。
& g! R" h4 Y, l" H7 M* R# L8 c
E5 E6 I0 K: I启发,,,可以变更缆法,改变庄闲比例,指定胜负路。。。。(待续) |
|