|
|
楼主 |
发表于 2025-10-31 11:15
|
显示全部楼层
本帖最后由 Banker 于 2025-10-31 11:17 编辑
# o% ]/ h, _) t- T/ m" x, }/ n) a3 J2 K
可用Excel,逐手模拟过程(但 Excel 跑不了 100000 靴,会非常卡)。' ]8 z# r+ s( A1 @; w7 x0 n ^- a
Excel 更适合 直观小样本测试,Python 才能跑大样本,Python 可以试试N万-1亿靴,10亿靴,有没有没必要?你高兴就好。
/ V" b. x# [4 [3 }) g" x" H* W+ W% c5 i: r! `) U
在你电脑上运行 Python 模拟器 (版本3.0以上,若没有,在Python官网下载安装)
# }3 j' G2 z& q7 g9 ^假设你已经安装了 Python 3.x(在命令行里输入 python --version 或 py --version 看看有没有)。8 [3 Y0 @3 C" q
先写一个最基础的 百家乐投注策略模拟器(自己定义的规则)。! j+ e' L' S* s
: e+ d# q( _ I# q$ A& u0 b6 k4 g
步骤 1. 新建一个 Python 文件
& E# j7 A6 {* Y/ e5 @5 R& G _# l打开记事本(或 VSCode、Notepad++ 都行,我用记事本)$ ~& B& \; W- j0 T3 @
把下面的代码复制进去。& y# |% {5 h! D1 {: ^
保存成 baccarat_sim.py (注意后缀是 .py)。& w& S$ D5 @' J% I; u
0 q3 d7 e7 ^7 S2 s. y) a0 _/ n/ {import random
# |( u* @: ~& Ximport argparse
& K+ g0 Z$ N v- E8 W1 u! T$ s3 E( X! g4 o. a9 Y% j1 _& {2 K
# 初始化鞋子 J( ^4 X$ o3 c! z- l3 x
def init_shoe(decks=8):1 t2 e! _* H9 x6 ], ?
# 每副牌52张,8副共416张/ f$ J( f# Y" b* y( M
shoe = []' K# F: V D" f9 \, C7 x) X* u
for _ in range(decks):
, [. K" D2 n% G& \' g9 M4 ` shoe += ['P'] * 24 + ['B'] * 24 + ['T'] * 4 # 简化:庄24, 闲24, 和4
# }9 d- L9 t. n random.shuffle(shoe)
+ @ m; {* ]% z" y3 L0 B1 Q" E$ w0 [ return shoe
3 [: Q* ?8 p, x9 }" g q) g
1 U; {7 z, d% d& t D6 }# 发一手
! B0 y& j# `$ p2 `1 N2 _$ gdef deal_hand(shoe):9 K. k; p0 U' V) p
if len(shoe) < 6:
( }* ^$ |9 ]6 j9 ?0 K2 l shoe[:] = init_shoe()
% D) D& h4 O. \) ~: o( i return shoe.pop()# W' S: Q0 D9 V4 y
4 K2 O, f, a: H) h# 模拟下注法 A# q) j" {' j) q7 {
def simulate_strategy_A(num_shoes=1000, commission_on=True):
T) [1 j |/ q profit = 0
4 [/ K" v/ n3 Y commission_paid = 0# s a5 c& k% E) f" e" _# M
shoe = init_shoe()
: {. B; J i: J7 c
8 i6 p" V, y& Q7 e # 策略参数& m7 c; D/ [! u$ O
sequence = [1, 2, 3, 5, 8, 13, 21] # 示例进级
! X* H1 R. S* b: s) a: N stage = 09 B. x7 f3 w( T* P$ y4 E$ B" L
target_side = "B" # 起手投注庄( O7 H4 g9 X& d C- F4 f3 G v: Z
8 X( J+ ]; Z, R! N0 a; \ while num_shoes > 0:
- U. s1 c6 ]1 l8 k/ D7 P0 m4 l8 c result = deal_hand(shoe)
9 B3 S# Y) ^: N# F% }5 q6 @' b& K/ [& u9 `7 J
if result == 'T':
* x& }1 l, d& u0 P8 M8 @" B2 m # 遇到和,不输不赢,重投
: F" P& z; n8 D& o continue
% ^3 A5 ^) \1 V2 P: l) d% S" [: `
bet = sequence[stage]
; i! Z1 s, q4 n& n ( T/ s$ l1 ~0 e! M" g& k' \
if result == target_side:& {5 g+ {- R; O; J8 {8 q
# 赢( P3 l e* W) N. Y$ [- x% l
win_amount = bet ^( d# l, m( L8 t
if target_side == "B" and commission_on:( h8 t8 e3 o' l5 U% ?& B K
win_amount *= 0.95 # 庄赢扣5%抽水* ? m e# y3 \/ [4 w* p+ N9 I8 c6 }
commission_paid += bet * 0.058 ?8 f% R3 y2 u& @0 G* {0 X
profit += win_amount+ A" x( ~! e9 u: A7 n. X* Q
stage = 0 # reset8 Y" b, H% s3 [3 W" b- e% Z. F! i
target_side = "B" if target_side == "B" else "B" # 固定庄(A策略固定)- s6 k+ @. X+ d! g: w8 B
else:; C" p0 U; P. W' j
# 输
7 o, ^+ _* f/ N' S profit -= bet
b; S8 t% w! I+ \ ?% B( Y stage += 1; W6 @4 w& R% a
if stage >= len(sequence):
% P3 k- S% Q; W stage = 0 # 断缆reset
: e& f; T9 J' Q( H, @7 q' N num_shoes -= 1" ?. l7 T( S7 i0 Y- F
* P8 l- h& m& B2 X; _5 u
return profit, commission_paid
2 O- k: d+ J/ c+ e8 g/ F
7 }& e* W! E' |# 设置命令行解析0 U- ] j9 l/ b `1 y+ D# [7 T$ f
def main():7 @! q8 l# Q1 Q7 n9 Q& [3 O! V
parser = argparse.ArgumentParser(description="Simulate Baccarat strategy with commission on/off.")9 ]4 Y2 \$ C; f
parser.add_argument('--commission', choices=['on', 'off'], default='on', help="Enable or disable commission on banker wins.")
: O/ U5 L+ i# v8 x: u/ M parser.add_argument('--shoes', type=int, default=1000, help="Number of shoes to simulate.")1 O2 L+ L1 y1 m
* G9 x& P; N- i X args = parser.parse_args()0 P- m1 W0 U$ l& o
$ i% W/ q5 ~8 K& D
# 抽水开关:开启或关闭
6 ]: y: R( X5 i) I# A5 _2 t( M, l" ~ commission_on = args.commission == 'on'
* y7 N* c+ T) e" P. ` w) i- y
" c* u/ l% X& K2 M! F& E result, commission = simulate_strategy_A(num_shoes=args.shoes, commission_on=commission_on)
5 g. C$ I! M R( i print(f"最终盈利: {result:.2f}")4 u8 O b( [6 V% i2 p
print(f"累计抽水: {commission:.2f}")
: @ n/ C( d) A! Z" m6 g5 B: y- G5 Y$ Z. I5 K, J1 a
if __name__ == "__main__":
3 T' _7 t6 h+ D, d7 G. `4 u' t main()* [% H* n: d! l8 t( F
t$ Q8 @) ?' v% I% M, v" x" X* m& t9 F5 Q
步骤 2. 运行
4 K: X& G8 D* r$ ~8 V9 ?
0 V" a! W3 m+ |0 d在命令行里进入文件所在的文件夹,例如:& k7 G6 [, L7 I$ C" u- m
cd C:\Users\你的名字\Desktop
& p! m8 s& e8 m: R2 M! ypython baccarat_sim.py
! }1 p* R# r6 g% k7 Z/ S
M& I2 K) ?& {9 @输出会显示:0 M2 ~1 E: g5 W4 J& a
8 E' {5 } p, H- o7 b# O
累计盈亏: xxx
2 R, J5 y/ C3 R( {累计抽水: yyy
" M' ^( H0 g4 L E7 a+ D: c) J' O-------------------------------------
2 v( I: j: m. o& Z) L6 f/ m2 `& a! Q实例:试跑3次, 8 L$ ~' a% e/ [2 m
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
! V) i- ]7 h+ c2 T, Y; U最终盈利: -5360.35 8 \1 T$ m7 X: m
累计抽水: 5176.35
1 v3 T2 p) B) g# F1 d4 DC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
+ I. Z$ m2 W5 F0 `最终盈利: -5661.65
0 `( w2 _* J, j' k7 s! P. x/ P) v累计抽水: 5174.65 . t G6 h& t" V( s" y
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py 2 x( t9 e6 Y% g) C' |8 l6 Q4 d- S) l
最终盈利: -4244.50
; }; z5 v% e- v& w累计抽水: 5176.504 Q% s" L8 N$ d$ \2 H
) ]' z5 s7 y5 M说明你的 Python 已经能正常跑模拟了。结果也很有参考性:: j+ s! r5 d+ F* X0 x% i+ I
" s6 a1 S* H+ v0 x累计抽水固定在 ~5175 左右 → 这和你设置的「抽水开关 ON」一致,因为你每手下注金额相同(例如 8 单位),程序是按 Banker 抽 5% 计算的,所以长期下来,抽水会稳定在一个范围。! T* t }) n' o9 o2 M% i/ i
9 D% b; w" t1 g6 }) a最终盈利为负数(-5360、-5661、-4244)→ 这说明在 100,000 局的模拟中,哪怕加上和局不计,下注方向固定,数学期望依然是亏损。; m1 t& B: J( h) s3 _
这条缆不能直接用,用了会输。必须改缆法,或改缆法并且改下注规则。7 [1 K1 ]( y* B$ b5 ?
人们喜欢举例盈利,有吸引或牛逼的效果。。。用亏损的例子,可以真实告诉你,道阻且长不容易。
4 s9 R, P9 b5 h% b但是别沮丧,办法总比困难多。只是,你自己悟的,是最好的。8 c* e' w$ L; y
2 N9 j8 P z% ?1 Y9 q, A4 F& I$ x启发,,,可以变更缆法,改变庄闲比例,指定胜负路。。。。(待续) |
|