|
|
楼主 |
发表于 2025-10-31 11:15
|
显示全部楼层
本帖最后由 Banker 于 2025-10-31 11:17 编辑
: S# _2 j; ?7 a# ]% F7 p- P* d5 h3 q. r) N: V: W2 g
可用Excel,逐手模拟过程(但 Excel 跑不了 100000 靴,会非常卡)。: G& r: e; ]' r7 i& @8 ?
Excel 更适合 直观小样本测试,Python 才能跑大样本,Python 可以试试N万-1亿靴,10亿靴,有没有没必要?你高兴就好。# b% X1 r. Y* g
4 | a0 f3 f/ n+ I' N3 |0 U7 v
在你电脑上运行 Python 模拟器 (版本3.0以上,若没有,在Python官网下载安装)2 S0 r1 q# r8 h
假设你已经安装了 Python 3.x(在命令行里输入 python --version 或 py --version 看看有没有)。4 d0 V% ^# }3 s$ L2 y, E
先写一个最基础的 百家乐投注策略模拟器(自己定义的规则)。1 E% X) g2 t+ C/ S2 U6 H6 Y- U; ]
; h6 v* X8 y0 v& A( z: r/ r步骤 1. 新建一个 Python 文件+ w" e2 C. Z# o$ G* P9 e. P
打开记事本(或 VSCode、Notepad++ 都行,我用记事本)0 Y# ~1 ?0 G) Z! M8 N# j, X# t
把下面的代码复制进去。
- \1 _8 `; J6 O& P: D保存成 baccarat_sim.py (注意后缀是 .py)。
# A V, F8 h, @
& p' u F+ G1 M* Jimport random% K b0 @5 X& W
import argparse- Q' j( N1 f5 N& l: L
0 x, c: o( O& g# R% H1 |& x
# 初始化鞋子9 _* v$ z; D5 |! B& n. I# ?5 E
def init_shoe(decks=8):- z: B) p9 s- A) K8 K
# 每副牌52张,8副共416张
7 t4 b" D$ [. {/ F shoe = []
" Q! t9 ~$ a3 F8 ]5 p% |: v for _ in range(decks):
# ` V3 \% G1 e shoe += ['P'] * 24 + ['B'] * 24 + ['T'] * 4 # 简化:庄24, 闲24, 和4; p2 K% R; M; \! Q$ z5 R
random.shuffle(shoe)
) K+ \" v! i) s return shoe1 e) r# B4 J8 G! [# V; g# U2 V
/ `; g! f- u+ T1 j
# 发一手
* J' d: W) q. c( c8 \3 N3 Idef deal_hand(shoe):
3 i2 o! f6 V6 f$ p3 X if len(shoe) < 6:
) e9 o# M, ~ |4 C& d shoe[:] = init_shoe()
3 e! T) E; j+ I9 f4 ?+ p return shoe.pop()% e) o0 }; J! C* B! V1 k
' E8 I. a9 j; n5 \7 g# 模拟下注法 A
6 S" g5 T4 |$ {7 S# o( T% ~4 vdef simulate_strategy_A(num_shoes=1000, commission_on=True):% [. X- z; W' k, `% q
profit = 08 |! r. L6 ~1 n5 H/ Z5 @
commission_paid = 0% Z2 U& Y1 T. _
shoe = init_shoe()
+ u( h6 W8 o. j* _* v1 c - w! ^! q) O5 {' S( Y, z
# 策略参数
0 k; L. X# R7 n7 a* ^+ C sequence = [1, 2, 3, 5, 8, 13, 21] # 示例进级
3 a" @, d4 i; X& t1 G0 Q stage = 0( b: z. S9 O( Y" U; t: K
target_side = "B" # 起手投注庄
7 _1 n3 p5 `$ _4 _* ~ k% B& x* Y J8 w2 W S8 g- `. z- i
while num_shoes > 0:+ Z0 f: q- a" C9 Z# D4 J4 P# y
result = deal_hand(shoe)
. r2 s( I+ u5 P" j. M& m
9 J6 v* @9 k7 T8 K4 Z# j if result == 'T':
: y) A& w2 w; H! q' k1 U" X, ` # 遇到和,不输不赢,重投4 m' i( E( f0 P/ N6 d
continue% N3 S4 l1 j6 ?! N
% ~' d: y# U% ]. T4 { bet = sequence[stage]
|0 V9 |3 |* a/ [3 H; q8 t1 y. c 2 U0 X6 y1 E2 f% I0 M7 k
if result == target_side:8 H. b. K& l" a
# 赢2 r1 h6 d: v+ ?
win_amount = bet
& I' a$ G* [9 L2 O if target_side == "B" and commission_on:3 p- t. O" Y" |& }1 S: N& ?
win_amount *= 0.95 # 庄赢扣5%抽水
- K+ k/ i% N z commission_paid += bet * 0.058 ^* ^8 n/ P% M3 H3 G, {# R" l
profit += win_amount2 ^- V$ V& ]/ b5 E# O
stage = 0 # reset( z0 ~0 q0 C5 @$ I5 {0 F) K% o9 {
target_side = "B" if target_side == "B" else "B" # 固定庄(A策略固定)% o1 C% z; `- Y3 M. I* E
else:
5 Q4 y1 o& w2 K) L$ P9 W # 输; C' L$ f0 i, k- k- J
profit -= bet
, e& y, B, M, ^ F% S- f% M* | stage += 18 S; l5 v8 E, `2 W s; p" p
if stage >= len(sequence):$ e3 q4 G* h4 o$ _3 m7 W
stage = 0 # 断缆reset
# X% u6 v# I$ P |9 \ num_shoes -= 1
1 k# z5 c: l6 t0 A2 s, L$ g) M$ y$ `) `
return profit, commission_paid
+ x4 ^7 ^0 u( ]( A C" j' U" o4 A6 F e& t/ ^: a
# 设置命令行解析
9 G* H3 Q5 }' c# |. {def main():0 A+ a% f0 [5 V! W; ]. B4 _3 n
parser = argparse.ArgumentParser(description="Simulate Baccarat strategy with commission on/off.")
/ z9 [/ H6 C" f+ O4 u& Z3 D parser.add_argument('--commission', choices=['on', 'off'], default='on', help="Enable or disable commission on banker wins.")
5 Z ^/ Y$ I$ J9 k2 n parser.add_argument('--shoes', type=int, default=1000, help="Number of shoes to simulate.")8 u1 z& K# v/ E r2 t6 q5 x+ N
% a; G4 V- }& A args = parser.parse_args()
' @* m- g; g3 m , Q' Z9 b: `; |- P& z
# 抽水开关:开启或关闭
) V) G/ y" _" q# m6 X; ?4 I( ^ commission_on = args.commission == 'on'
. Q! G, u7 U% b( Q8 |* ]4 h 3 W3 E( T5 c+ |1 A; m' {
result, commission = simulate_strategy_A(num_shoes=args.shoes, commission_on=commission_on)
7 d- t3 L' t: Y5 ? print(f"最终盈利: {result:.2f}"). c9 p4 C0 o9 A1 u% |3 f5 Q7 o
print(f"累计抽水: {commission:.2f}")
" F) r3 s1 N+ ^; k& ^5 H' y
2 V/ }% t! @% [0 {, C' zif __name__ == "__main__":! \; p4 \4 G; J" m F9 y8 X
main()
5 E4 I! c: K2 b, V4 [; l* Q# A5 K; q1 {! ^( [0 \
6 [7 f5 m, x2 k I' X步骤 2. 运行
" D! r6 J5 I5 Z5 d3 ^* A1 f# _4 S& d' P
在命令行里进入文件所在的文件夹,例如:. j- t3 L' u8 K! S) D
cd C:\Users\你的名字\Desktop# E# ~2 E/ _1 N+ \" k; r
python baccarat_sim.py
+ q9 O, f; f( ?( l/ @- [
+ P; Q" L8 n( x5 A4 p输出会显示:
, q) N; _: G$ c8 J5 c/ K, `# [$ @
; \4 M( q0 z' Y累计盈亏: xxx+ D* K5 |. Q7 v; u& b6 b( @8 d% M
累计抽水: yyy
( {7 C0 n; U$ L. q- t4 ?-------------------------------------
1 V- n1 t6 Y1 W# l. [2 r实例:试跑3次,
# X; `* z" e+ Z4 GC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py ! H# X S& R& F: w+ m
最终盈利: -5360.35 3 H7 }" Y% k5 r% x
累计抽水: 5176.35
' T1 _9 F8 M0 j, qC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
( ~- E* j# V" P: X+ n0 p! o* ?7 k最终盈利: -5661.65 : w+ ]& B0 J6 |% T
累计抽水: 5174.65
I* c2 l1 k8 [/ L/ f& NC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py 4 ?" C- Y7 l9 K; x
最终盈利: -4244.50
0 P1 b! [' ^7 `+ G9 X( \/ o累计抽水: 5176.50
+ X; G* R$ l( o+ o9 [ W: @/ m4 \4 f" i- k4 r
说明你的 Python 已经能正常跑模拟了。结果也很有参考性:
' n, N' S7 w- N1 I$ k% d
( f' x l4 y4 e7 Y% x累计抽水固定在 ~5175 左右 → 这和你设置的「抽水开关 ON」一致,因为你每手下注金额相同(例如 8 单位),程序是按 Banker 抽 5% 计算的,所以长期下来,抽水会稳定在一个范围。
+ }: v) @; K, [4 f& W' A; f
% V+ ^1 H$ K6 j% _/ [' { J最终盈利为负数(-5360、-5661、-4244)→ 这说明在 100,000 局的模拟中,哪怕加上和局不计,下注方向固定,数学期望依然是亏损。
% G8 @1 l0 F5 [3 |1 I# x这条缆不能直接用,用了会输。必须改缆法,或改缆法并且改下注规则。
' T( y$ }, o8 l2 D: H0 r6 R0 {: h人们喜欢举例盈利,有吸引或牛逼的效果。。。用亏损的例子,可以真实告诉你,道阻且长不容易。
4 y4 ^; m/ |9 J: O但是别沮丧,办法总比困难多。只是,你自己悟的,是最好的。. K& e! }6 s% t7 m7 T* @+ O3 d" D
3 ~. Z* O5 @+ a6 r8 M2 U
启发,,,可以变更缆法,改变庄闲比例,指定胜负路。。。。(待续) |
|