|
|
楼主 |
发表于 2025-10-31 11:15
|
显示全部楼层
本帖最后由 Banker 于 2025-10-31 11:17 编辑 2 q9 k/ S2 W: v! ^: N0 v
' l, R, H/ G7 i, c$ {% s可用Excel,逐手模拟过程(但 Excel 跑不了 100000 靴,会非常卡)。$ b# R- h2 ^% `. `3 m
Excel 更适合 直观小样本测试,Python 才能跑大样本,Python 可以试试N万-1亿靴,10亿靴,有没有没必要?你高兴就好。
- z* ?" U1 p% ^- l" d9 ^/ b3 Z3 e/ A. F6 d: g) t
在你电脑上运行 Python 模拟器 (版本3.0以上,若没有,在Python官网下载安装)
. v. S: h; W) `" t1 i! t k假设你已经安装了 Python 3.x(在命令行里输入 python --version 或 py --version 看看有没有)。
6 o) J* |( p, q' x q先写一个最基础的 百家乐投注策略模拟器(自己定义的规则)。
& D4 ~/ t+ z E4 a F. P- a! H
7 ]; ]- Y9 `! X2 t步骤 1. 新建一个 Python 文件* y8 P3 L) N% x
打开记事本(或 VSCode、Notepad++ 都行,我用记事本)" K; U5 I: J- p
把下面的代码复制进去。, O) h6 p% Q' j5 p
保存成 baccarat_sim.py (注意后缀是 .py)。' P0 @3 a6 Z3 W) ^
9 x3 o" N6 R, b2 U/ W4 }4 x
import random
8 y$ _& y$ o! y7 B2 m4 Nimport argparse
6 }+ S4 _1 p- r7 w/ |: \
, Y2 S7 y- m0 ` S6 J# 初始化鞋子
/ p2 a2 `) x% V) edef init_shoe(decks=8):
1 S' B9 w* i2 ^& N: J4 f; J # 每副牌52张,8副共416张
0 L% s" x M& j" O/ p shoe = []
- U* Q+ N# u0 K, I- P4 L. q- P( } for _ in range(decks):
[: v! @, N5 q5 E( @ shoe += ['P'] * 24 + ['B'] * 24 + ['T'] * 4 # 简化:庄24, 闲24, 和4
! y7 v2 r6 E( A. d; v random.shuffle(shoe)
( M0 H0 R. N& ~* F( ^8 K; m return shoe
0 m/ P+ Q7 @: W/ b }6 c0 @2 U7 {* \
& H2 a6 d3 S, m) F: W. A# 发一手
- {0 g! k P* u+ e% Ydef deal_hand(shoe):$ c6 @9 Z- J5 _
if len(shoe) < 6:) o- R3 z) [: d+ V
shoe[:] = init_shoe()
5 A8 u7 O$ V! Y/ H# | return shoe.pop(), P+ G: ?& | G- |" d8 X
' V t6 l \; L4 ], n! B2 W f
# 模拟下注法 A2 k) V) z: U' ^, X* q% y( G
def simulate_strategy_A(num_shoes=1000, commission_on=True):
# I; M' t9 n7 T8 V profit = 0
6 {# S# T2 A4 \! P1 D- c& u commission_paid = 09 z+ ~; t) A" M6 t3 S$ L7 i- e! U
shoe = init_shoe()& R3 I7 |5 L' D5 @2 [
% s+ U( J2 y; F0 L
# 策略参数
+ a. N% X( P" v$ I+ N sequence = [1, 2, 3, 5, 8, 13, 21] # 示例进级
, n a" ?" I4 E4 O stage = 0
7 Z8 u3 \8 j2 y; o Z target_side = "B" # 起手投注庄
8 j, F& b* ^% ^
8 f5 w' z# S8 n4 l% G/ | while num_shoes > 0:- I4 O0 m0 K- X4 g, ^9 i5 s" P
result = deal_hand(shoe)1 Q! y) r9 R: N; U
/ H3 u2 P$ S, q5 A3 w) t
if result == 'T': 9 \& o8 [( Z* j: y( c( P: D
# 遇到和,不输不赢,重投/ b& d7 X7 c+ X ?; `2 J& a
continue
6 ?5 p# X$ y7 p; P0 J+ B
9 _5 ~9 P9 B2 U* |' ]% r bet = sequence[stage]9 @, C; a( D* j$ ?: z0 W
6 @# M( ^# ]( M+ M0 U9 w4 ^9 t% u
if result == target_side:
, |( b8 B8 Y& E# x$ w* i( A9 T # 赢# V+ y! y% ~( _3 h9 ?, f3 F+ G; O
win_amount = bet& A, }# K H2 P# J% S' A8 O
if target_side == "B" and commission_on:
4 Q& \" o% [# i! Y& X win_amount *= 0.95 # 庄赢扣5%抽水3 M/ K s0 m8 I. i$ S
commission_paid += bet * 0.05
' f: ?% C8 k. S5 _% V- a: D& l" N profit += win_amount3 s5 c* g. p1 H1 r8 f' v; D1 _5 i
stage = 0 # reset" d( {$ t. ~' x
target_side = "B" if target_side == "B" else "B" # 固定庄(A策略固定)2 l ?" a) B0 t
else:' f# u% K! @2 I2 _# }. i+ U
# 输
: i4 {7 H# T' F. G; W$ L8 n9 D- M profit -= bet
% @7 T+ U. a0 w$ m stage += 1
2 l/ C5 c4 L! O/ O9 O" L3 B if stage >= len(sequence):
5 y9 `- b1 R1 i; K% R stage = 0 # 断缆reset8 I4 r; o1 V6 Y5 v y0 M5 V5 l
num_shoes -= 1( R: ?. p% K) F5 F
* ~1 B2 k5 \9 W- I! n4 w return profit, commission_paid: j, x. J2 D; M+ F* V, f3 d
2 ?( U/ a! o, s# j# 设置命令行解析
1 D" S& w T5 {# e4 cdef main():
/ I9 K3 x6 I+ w! \# p% R0 d% q/ [ parser = argparse.ArgumentParser(description="Simulate Baccarat strategy with commission on/off.")8 s# B. N M4 \0 R: M5 F+ A7 a
parser.add_argument('--commission', choices=['on', 'off'], default='on', help="Enable or disable commission on banker wins.")
$ H! J9 w/ c+ d2 p parser.add_argument('--shoes', type=int, default=1000, help="Number of shoes to simulate.")7 f! W/ k! [+ c& u- m
" o' I0 _" [. x args = parser.parse_args()# i' i% m9 S1 O3 Y& w
# I$ D( B& l# R& t3 z7 G # 抽水开关:开启或关闭- n- g% o3 m! K
commission_on = args.commission == 'on'3 J9 h! D+ l9 ]3 w# e3 @' W
" u# \: k7 ^& H8 [# c7 O- B
result, commission = simulate_strategy_A(num_shoes=args.shoes, commission_on=commission_on)
7 c! ]) Z+ f( F5 j/ M print(f"最终盈利: {result:.2f}")8 ?' N, U) y! \$ \
print(f"累计抽水: {commission:.2f}")
" i& [4 |4 b7 C* }7 F. o
( F1 ], R9 g6 y5 l& xif __name__ == "__main__":
" ~$ N! j0 E: t0 C- w main()$ t. E$ E1 {" s) l; v
( d- M& z1 l# _4 e) z- Z1 c: g
7 |( j- \ X- `% R步骤 2. 运行
. f1 C8 W. o) W0 c8 T8 U
0 h6 @7 q7 g6 d, P+ b在命令行里进入文件所在的文件夹,例如:, }4 T0 x( n3 y* r7 k3 L0 ^
cd C:\Users\你的名字\Desktop1 K7 s$ H0 {9 Y: s) C( K: g
python baccarat_sim.py/ ]2 F; v; I% B* B
* b& T% L& f: b+ C; z输出会显示:
9 s0 T" `6 q+ Z; i& m# W$ B D; r: e; ?# b8 j6 D I
累计盈亏: xxx
& j! _9 X! c# T1 D) q2 b累计抽水: yyy! u2 z' ^0 R1 `
-------------------------------------
" J! ~: r% ^7 Q6 B x7 n4 {实例:试跑3次, % ]% ]' A- V0 t( }8 Z
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py 2 e1 _- z) R) J6 x: _5 X5 Q
最终盈利: -5360.35
" j5 a& M* l% Q& S- x( ?- O累计抽水: 5176.35
0 ~. F! u5 j! k$ e" v/ @& T4 PC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
2 f3 T& h7 ~9 `最终盈利: -5661.65
) f" I; \7 i' h) l8 v( V, `累计抽水: 5174.65
4 w* r T" i3 }# n5 I% T. fC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py 2 B: _, }! a. F8 Q; S L
最终盈利: -4244.50
' o2 \: L0 X$ S, U7 Z5 ~* k+ q累计抽水: 5176.506 w$ T$ F: z/ v, g1 o5 v
: e/ g1 h" R( T" C' n6 v
说明你的 Python 已经能正常跑模拟了。结果也很有参考性:
7 R1 o! u* ]' c1 V
+ E4 ~9 U* H3 n& X+ q( b累计抽水固定在 ~5175 左右 → 这和你设置的「抽水开关 ON」一致,因为你每手下注金额相同(例如 8 单位),程序是按 Banker 抽 5% 计算的,所以长期下来,抽水会稳定在一个范围。( v) `; _6 h8 ~
% V! f3 X+ Q+ q% u% I最终盈利为负数(-5360、-5661、-4244)→ 这说明在 100,000 局的模拟中,哪怕加上和局不计,下注方向固定,数学期望依然是亏损。
* c3 G- X0 R; o0 N5 _这条缆不能直接用,用了会输。必须改缆法,或改缆法并且改下注规则。
; m |4 w3 I f* s& e人们喜欢举例盈利,有吸引或牛逼的效果。。。用亏损的例子,可以真实告诉你,道阻且长不容易。& S- P5 w3 n* [1 A2 `+ S$ M# \
但是别沮丧,办法总比困难多。只是,你自己悟的,是最好的。
, E2 s' a% l: e3 z5 k( W
2 I, c4 \- s. r, _7 P# S. ~* |启发,,,可以变更缆法,改变庄闲比例,指定胜负路。。。。(待续) |
|