|
|
楼主 |
发表于 2025-10-31 11:15
|
显示全部楼层
本帖最后由 Banker 于 2025-10-31 11:17 编辑 ) d+ n7 u# v/ B& e: M* ^( k% z: h
* A% |! u% E2 F- @8 S. j可用Excel,逐手模拟过程(但 Excel 跑不了 100000 靴,会非常卡)。9 g1 T. X4 I! Y, M: c @! X
Excel 更适合 直观小样本测试,Python 才能跑大样本,Python 可以试试N万-1亿靴,10亿靴,有没有没必要?你高兴就好。4 n, W1 m) T4 V' F0 g* q" b ^
# h; r% }- C) f7 A5 F; t8 [, W
在你电脑上运行 Python 模拟器 (版本3.0以上,若没有,在Python官网下载安装)
& h" M6 [/ m) A5 D; b8 u) j假设你已经安装了 Python 3.x(在命令行里输入 python --version 或 py --version 看看有没有)。
2 N8 I4 N1 N/ g7 \5 @% X9 R. S9 G先写一个最基础的 百家乐投注策略模拟器(自己定义的规则)。# |# T/ ~) u! X
5 l" d" V1 z* G. \步骤 1. 新建一个 Python 文件" R3 _, \$ I7 c5 u! B# E
打开记事本(或 VSCode、Notepad++ 都行,我用记事本)
4 F: K& u3 S6 K0 J把下面的代码复制进去。1 J/ U$ P f9 a$ o; s* s9 x( G
保存成 baccarat_sim.py (注意后缀是 .py)。; k# h! p0 u# i& X9 c$ c
, Q/ n( \# r! Y! P T$ Iimport random" \) D/ {1 |: _6 E' A
import argparse" \$ w+ R) }+ T
7 X, d4 R& T8 q- f0 d
# 初始化鞋子9 P! D8 ~' W4 ]1 L: }
def init_shoe(decks=8):
1 }! s* ~6 W3 I% W+ V1 T # 每副牌52张,8副共416张; d: v; K( Z1 d$ V3 f
shoe = []
. N) E+ V U- j2 V. b% M& D for _ in range(decks):
5 s, _( Y, o4 h1 f4 _ shoe += ['P'] * 24 + ['B'] * 24 + ['T'] * 4 # 简化:庄24, 闲24, 和4. Z: a$ @: a; b5 H. ]: A+ f
random.shuffle(shoe)# t% P' ]$ x/ Y: G& ?; L5 Z9 z) k# b
return shoe7 Q4 }) r5 ~3 x: ~6 I
& I6 q% d* H$ O$ {! }
# 发一手; @* R, ]6 i7 y5 x
def deal_hand(shoe):* [ V$ n& n- U9 i7 O) V
if len(shoe) < 6:& I A& m) }7 j9 ]
shoe[:] = init_shoe()$ N/ K1 z' G6 a P
return shoe.pop()
0 K- T2 B/ e* V7 b' i; k6 b0 X
) l0 }# C9 G4 ]: t6 X6 E7 B( x# 模拟下注法 A
5 M8 E \& K" f5 V# {7 v9 hdef simulate_strategy_A(num_shoes=1000, commission_on=True):( Q+ s. K% n" W+ N+ @9 O
profit = 0( S1 T/ A) D7 P/ D
commission_paid = 0
! \3 C8 A- B$ e* e! ^" Y shoe = init_shoe()
2 i: I R$ ^- u- @ " N* Q) W, W P
# 策略参数
1 |1 e6 n/ b) Y/ [& O sequence = [1, 2, 3, 5, 8, 13, 21] # 示例进级# e% g; d( \5 u: V! X
stage = 0. z3 p) b# z7 L
target_side = "B" # 起手投注庄
& D9 s$ _# [- k, q: p- S: R; T9 q/ S5 [, R, g
while num_shoes > 0:
) C6 Z; ~$ @9 D6 J+ V ]) @ result = deal_hand(shoe)
+ h x( y& r( F; S$ s4 Y) J& Y- x- x% a
if result == 'T':
0 m# k- R6 W5 A4 ?( L$ @8 A$ B& r5 e # 遇到和,不输不赢,重投
( A! e& N. q0 f% n3 S' e* F continue# E' A" Q) k8 K9 V0 {: c) d7 K5 G
) s1 w$ t6 a8 |# ~1 ]5 _ bet = sequence[stage]! U0 n' z4 K- n- S
0 z! I2 r) S# q7 N4 c9 K0 W
if result == target_side:
7 R7 M' M! l. ]- r # 赢0 b# K+ t2 ^9 @8 L: y, W
win_amount = bet
) r/ `# k0 ]1 L8 ], H if target_side == "B" and commission_on:
3 p- P# { N9 ^4 ~# ~' L7 ^ win_amount *= 0.95 # 庄赢扣5%抽水( _1 z0 R& d4 `' q E
commission_paid += bet * 0.05
3 w" ~9 U u2 \8 J/ |# {6 _" U profit += win_amount! v* I8 e" `* E( d
stage = 0 # reset' ^" i& e; H2 Z8 W
target_side = "B" if target_side == "B" else "B" # 固定庄(A策略固定)
& c" m( c* o0 [) x" Y1 K0 J else:+ Q( f1 G3 V# \4 s! s
# 输
0 Q6 X. E/ F/ u, j profit -= bet
& e) \( K5 \& w+ u$ }$ v stage += 1
* l" }# D, ^% u& N if stage >= len(sequence):
8 T1 u, h' B3 u/ W! G stage = 0 # 断缆reset: }; b: H( [% G4 S! X
num_shoes -= 1& I1 x0 \2 X0 v. H
5 ^2 V9 S1 Z+ I- ?
return profit, commission_paid
1 U3 U4 H, A, l0 c$ H& o0 e0 Q4 o7 L, v4 {
# 设置命令行解析, x( G8 x$ {$ V" F5 H
def main():0 K5 Y: y6 o( k6 [7 H. W
parser = argparse.ArgumentParser(description="Simulate Baccarat strategy with commission on/off.")
& ^) C; ]7 {2 K) d% R; C1 T parser.add_argument('--commission', choices=['on', 'off'], default='on', help="Enable or disable commission on banker wins.")$ ]3 q7 z8 Y+ `3 y
parser.add_argument('--shoes', type=int, default=1000, help="Number of shoes to simulate.")
6 t+ ?) t& N% h R* B9 a ) o2 c5 Z3 X9 m5 z; V
args = parser.parse_args()
6 w7 K; g) n6 L9 [
! [5 E+ w2 Q4 r, C! S # 抽水开关:开启或关闭9 f$ k3 o" c* Q9 `5 K8 ^8 J
commission_on = args.commission == 'on'
& O/ @4 e$ ^+ G2 m+ w * D6 k' m5 ?. r& ]* i! R5 ?) h
result, commission = simulate_strategy_A(num_shoes=args.shoes, commission_on=commission_on)- m5 S5 j _5 \1 x( O
print(f"最终盈利: {result:.2f}")( ~' w0 ]8 D& A, N7 `& q
print(f"累计抽水: {commission:.2f}")6 E, X( H& h9 K' t8 I
$ Y7 K( n+ K) wif __name__ == "__main__":! P2 e; H' u3 h' J
main() T7 Z# R0 K1 y
+ q/ g3 [' t9 \, p1 | k+ D
8 t* a2 p) B8 P0 L2 H步骤 2. 运行: \' }( z. A. J# E% S
! ]5 C5 x! ^$ a& m
在命令行里进入文件所在的文件夹,例如:2 v" X2 z$ O' w% J1 _+ k
cd C:\Users\你的名字\Desktop, y& U5 Y; K; a8 K: K- ?
python baccarat_sim.py
8 F7 v& r( _' e) L% f. V
1 C3 h4 V0 j3 v$ r. I) t% A输出会显示:
f3 }" y! {/ F0 l' |3 q& w2 S8 }/ P, G3 c
累计盈亏: xxx4 G8 z2 i; a" u1 M; Z: B
累计抽水: yyy
* {- ^9 y# _: j0 E/ r u-------------------------------------
% a2 m1 d0 b6 T3 y) Q7 Z# _" O7 n实例:试跑3次,
" p* p: m V3 A) wC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
/ c3 v3 u+ Y9 Y' r; ]1 b最终盈利: -5360.35
& o4 N7 e. L# x累计抽水: 5176.35
& y" W% e& M0 H" `1 E5 v' O2 J) XC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py 5 k2 t4 A* q/ i$ }
最终盈利: -5661.65
- n+ ~; W9 K/ |& U1 z) A( m累计抽水: 5174.65
# j9 F" W# Z! R. x! i5 L3 gC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py % d# ~# _2 |0 B6 C/ @
最终盈利: -4244.50 , O- B3 i; H3 U( F' l$ q/ j
累计抽水: 5176.509 @- g5 ~4 ^$ s$ E& m9 p
: L7 T( J B, `
说明你的 Python 已经能正常跑模拟了。结果也很有参考性:
; \+ S% S2 G( h' ]' S" _8 V5 B5 e) [! x% N
累计抽水固定在 ~5175 左右 → 这和你设置的「抽水开关 ON」一致,因为你每手下注金额相同(例如 8 单位),程序是按 Banker 抽 5% 计算的,所以长期下来,抽水会稳定在一个范围。
/ e3 C3 h) u5 g) N$ \% {9 X' H8 R( [1 d$ D! G
最终盈利为负数(-5360、-5661、-4244)→ 这说明在 100,000 局的模拟中,哪怕加上和局不计,下注方向固定,数学期望依然是亏损。" V" A2 ^, Q& h; b- J! t0 j) h7 w
这条缆不能直接用,用了会输。必须改缆法,或改缆法并且改下注规则。
- ~/ b* |9 K* G人们喜欢举例盈利,有吸引或牛逼的效果。。。用亏损的例子,可以真实告诉你,道阻且长不容易。9 a; @4 U1 H8 B$ o9 Q( U- {+ b1 F
但是别沮丧,办法总比困难多。只是,你自己悟的,是最好的。5 ^' J5 @0 K, _! p1 k m) p& m, l" E
0 E1 ?, a- ]3 |- Q; J: q! v
启发,,,可以变更缆法,改变庄闲比例,指定胜负路。。。。(待续) |
|