|
|
楼主 |
发表于 2025-10-31 11:15
|
显示全部楼层
本帖最后由 Banker 于 2025-10-31 11:17 编辑 ; G5 I" H6 e; p& r$ L% W" q
* h; t& T' q; c: \9 }$ {
可用Excel,逐手模拟过程(但 Excel 跑不了 100000 靴,会非常卡)。; n N6 L8 v5 C4 ]5 {+ a
Excel 更适合 直观小样本测试,Python 才能跑大样本,Python 可以试试N万-1亿靴,10亿靴,有没有没必要?你高兴就好。
5 F2 i t3 n* ]; m0 `* O( A$ o* V1 S1 L) o* l, O. f) j
在你电脑上运行 Python 模拟器 (版本3.0以上,若没有,在Python官网下载安装)7 t$ j! o" @$ `5 w1 }# l
假设你已经安装了 Python 3.x(在命令行里输入 python --version 或 py --version 看看有没有)。) G2 K# g$ l6 K5 f$ P
先写一个最基础的 百家乐投注策略模拟器(自己定义的规则)。% ~' N8 s$ W+ [4 r0 r
8 P9 H0 a6 _9 ?* B. L1 f8 h步骤 1. 新建一个 Python 文件
7 \' L- h% k3 O. ^8 J* U' ^ j: s打开记事本(或 VSCode、Notepad++ 都行,我用记事本)
; |- e3 ~) N4 [7 Z% ~3 @1 B把下面的代码复制进去。
7 g" Y0 g( o& x* x) f7 w% B8 O保存成 baccarat_sim.py (注意后缀是 .py)。! h6 {1 `* ~7 s6 t. m
* I1 |1 c9 y& {) z
import random" N3 L q! i6 j- V
import argparse9 J+ l6 q' y2 A8 F' p/ U
& H$ A u. K( X A2 m) z$ q# 初始化鞋子
1 j6 x; f- \" I' L- fdef init_shoe(decks=8):0 N1 q- B7 q9 ^8 z
# 每副牌52张,8副共416张
5 ^ {% Z0 x: q: j" { shoe = []
$ m. T- l& q7 E( D/ d for _ in range(decks):% L: v( [5 a5 G. _0 `; i7 o) Y
shoe += ['P'] * 24 + ['B'] * 24 + ['T'] * 4 # 简化:庄24, 闲24, 和4
5 D+ g/ S, P, \) A- J& H/ K random.shuffle(shoe)
" Y1 m- M* S W, [ return shoe4 g+ @7 ^5 i, Y* t8 M7 U" J
! K3 r6 n$ M4 ], o3 a: z
# 发一手
, i- S E0 K. R; A6 m: idef deal_hand(shoe):
' z& |+ c. V3 P if len(shoe) < 6:
4 m7 G. D* P1 c/ ~, G* C; R shoe[:] = init_shoe()8 R* j; c) `8 S3 Y* U. e' H
return shoe.pop()
3 q7 _# i7 Q, x5 g3 ~( v% L1 D# d2 M
# 模拟下注法 A
* Y3 S" V2 V3 Y( J# k% Adef simulate_strategy_A(num_shoes=1000, commission_on=True):* Z3 z+ j4 E! H
profit = 0, N% C- g; n/ x- c( H& E
commission_paid = 06 v6 r% G n9 s' C- |
shoe = init_shoe()
9 ^6 @5 h9 z: ?; I3 }6 Z5 v4 O ! C9 r& s/ v0 f* J0 u
# 策略参数
! f" u- v3 }4 S1 Z) Y- c, V sequence = [1, 2, 3, 5, 8, 13, 21] # 示例进级
' v5 k$ E) V+ X# b R& o stage = 0
6 S; Z N3 @9 V8 U4 L- {9 ^ target_side = "B" # 起手投注庄
0 t' X1 c4 M6 O6 }" ~7 ^0 o
* `+ f" ^" @3 b7 ` while num_shoes > 0:
; M1 T J# S% r+ @ result = deal_hand(shoe)
1 L8 e2 V! s; e I9 b6 P2 E D7 B5 P9 ^( S/ M4 P2 A/ h
if result == 'T': 9 f: T9 Q1 W4 _5 n5 f( m- e
# 遇到和,不输不赢,重投( r0 V2 q: c6 v% P1 W# E$ @6 H
continue9 o. x! u p% E6 L$ ]
* W% I; l% U1 E K# I$ s: u) L- S bet = sequence[stage]% t& y8 }3 L" m& f9 W
2 x* }# G5 ^0 r3 M4 y" l
if result == target_side:+ ]# g* A; S% K7 g( s
# 赢% g; k x* }" e9 W0 @
win_amount = bet) a9 ?9 A! S* p
if target_side == "B" and commission_on:
; v# d3 f( K3 h. C6 Y3 v$ E win_amount *= 0.95 # 庄赢扣5%抽水0 _/ c* h x& G, d1 L7 |4 d9 @! O) Y
commission_paid += bet * 0.05
: i) _0 X# T7 W+ T$ j8 S, W6 ?* f profit += win_amount( L1 a% w4 c8 H/ U0 d# g
stage = 0 # reset5 _7 ^3 b0 a) o9 U- }3 _0 E
target_side = "B" if target_side == "B" else "B" # 固定庄(A策略固定)9 i* m8 Z5 }( U: w& v( `# h
else:
. @, ~7 n2 o4 j( l; {4 A% M4 b # 输4 f$ I5 c/ @( q0 u) |: x
profit -= bet. C3 A# T7 v( T. C0 H
stage += 1
9 {, K/ U) W4 K; @8 F if stage >= len(sequence):) G$ M( i$ l5 H
stage = 0 # 断缆reset
: H1 |- ]2 R0 C$ R num_shoes -= 1
$ V& Z+ m) a. @, C% B& b6 I4 S! g5 U& S
return profit, commission_paid2 G0 ]* D: T" ~3 l
/ Q1 q' s G: m$ f/ b
# 设置命令行解析" i4 v6 {1 n% ]0 W! u! ?
def main():* x8 x# y0 L4 F( Y3 S2 w
parser = argparse.ArgumentParser(description="Simulate Baccarat strategy with commission on/off.")3 e# ^) k) B5 M4 d e4 S Y3 j
parser.add_argument('--commission', choices=['on', 'off'], default='on', help="Enable or disable commission on banker wins.")+ Z4 |8 U5 P% ^! j& Q2 m, ^; r7 b7 a
parser.add_argument('--shoes', type=int, default=1000, help="Number of shoes to simulate.")
9 i( c; I7 V v! N* z4 H
0 X9 u2 p0 `9 i* n% Q args = parser.parse_args()
1 N! n9 A( g: Z/ J0 q O" P2 n z9 X' p N' v, @& w: O9 E
# 抽水开关:开启或关闭
2 o" x* `) k! M6 a5 X% S- i6 o commission_on = args.commission == 'on'
- w' y) c$ I+ o& P2 U
* j% \' g* y$ k1 V" i# ] result, commission = simulate_strategy_A(num_shoes=args.shoes, commission_on=commission_on), g i/ |3 | W6 k L# Z
print(f"最终盈利: {result:.2f}"). D0 L5 G8 t) t% ^3 O8 Q0 R6 F
print(f"累计抽水: {commission:.2f}")& f R+ u$ E# x9 I
) o8 d8 Q* D1 [; A+ \7 A
if __name__ == "__main__":
" K1 w1 K: m: x% {3 ? main()' E. ?8 V& I0 {0 z
% V" l7 \& T5 o2 r% |9 {2 p3 m( _& U' d/ i. \4 N' m- C
步骤 2. 运行( K- p8 {1 t3 ^) P1 H4 c; p9 I
* ~2 y( J! Z) y0 m& u) d c
在命令行里进入文件所在的文件夹,例如:
% Y2 a# I7 a1 v3 f Acd C:\Users\你的名字\Desktop
/ g3 A/ y, v% e8 g4 Epython baccarat_sim.py
9 l1 N9 k/ e6 T$ e
$ c+ p( p6 e0 v输出会显示:
4 R& J" V# C# u4 n) Z. x" L8 Q* E4 m3 {3 ?4 U
累计盈亏: xxx
! [4 W- S+ N' g5 E* h9 ]累计抽水: yyy
0 b$ P: C! M5 |5 c-------------------------------------4 g8 y( c1 H6 }* z
实例:试跑3次, - b3 a0 }! B% K6 Q
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py / S- m1 r) L/ Q/ E$ w
最终盈利: -5360.35
/ B& r9 @- R9 K# ]累计抽水: 5176.35
, q0 E; G* I/ D$ Z) I _$ KC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
# q+ K" d3 i6 [2 b. i+ u6 g最终盈利: -5661.65 3 p# N, R3 `9 L; W
累计抽水: 5174.65 ; f: U6 m4 h& N4 L$ s: i
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
% C$ V p. F- H3 {/ `最终盈利: -4244.50 4 m! W8 H7 T; ~6 x/ g
累计抽水: 5176.50' j4 k- C p$ \
; c# n; N! ]/ ?- h* S. |( r
说明你的 Python 已经能正常跑模拟了。结果也很有参考性:
9 u2 J- \1 b/ G. x7 A0 D, k8 V5 r
4 D, q4 o5 i& T8 y. _累计抽水固定在 ~5175 左右 → 这和你设置的「抽水开关 ON」一致,因为你每手下注金额相同(例如 8 单位),程序是按 Banker 抽 5% 计算的,所以长期下来,抽水会稳定在一个范围。
+ H: F1 `9 b. n0 E+ y* ~2 s: B7 u
最终盈利为负数(-5360、-5661、-4244)→ 这说明在 100,000 局的模拟中,哪怕加上和局不计,下注方向固定,数学期望依然是亏损。
1 e. u& b; z7 K6 F2 H+ j" |2 p这条缆不能直接用,用了会输。必须改缆法,或改缆法并且改下注规则。3 k' K+ C3 x" [$ H8 q7 M' I
人们喜欢举例盈利,有吸引或牛逼的效果。。。用亏损的例子,可以真实告诉你,道阻且长不容易。3 K, d% N0 b& }( Q* a! w
但是别沮丧,办法总比困难多。只是,你自己悟的,是最好的。# H3 c; u4 L1 H$ P, S2 z$ l
7 P' [: i( T( p0 Z6 n$ `0 m# l5 Q
启发,,,可以变更缆法,改变庄闲比例,指定胜负路。。。。(待续) |
|