|
|
楼主 |
发表于 2025-10-31 11:15
|
显示全部楼层
本帖最后由 Banker 于 2025-10-31 11:17 编辑
# e, o0 Q* C% D# |4 b" F' o) P( s7 E, V; }
可用Excel,逐手模拟过程(但 Excel 跑不了 100000 靴,会非常卡)。
9 J0 s& B( n3 `3 d& ~0 L+ UExcel 更适合 直观小样本测试,Python 才能跑大样本,Python 可以试试N万-1亿靴,10亿靴,有没有没必要?你高兴就好。: \. n7 A) e/ J1 i; M
! `2 n3 ]' P. o5 N7 S
在你电脑上运行 Python 模拟器 (版本3.0以上,若没有,在Python官网下载安装)3 N' v0 Z: t! n6 R6 w
假设你已经安装了 Python 3.x(在命令行里输入 python --version 或 py --version 看看有没有)。
$ {1 {! R5 h/ |; ~* ~先写一个最基础的 百家乐投注策略模拟器(自己定义的规则)。
7 a; t2 L0 t1 ^
6 r1 J, W+ Y8 {* H步骤 1. 新建一个 Python 文件
) c' Q/ j9 w) R( ~打开记事本(或 VSCode、Notepad++ 都行,我用记事本)
! L* [/ K r3 i& b1 E把下面的代码复制进去。
% r/ o0 H; { `* d) w2 t( u保存成 baccarat_sim.py (注意后缀是 .py)。
, j& t- q6 p! I# T' r/ G; b( [& ^9 F4 Z/ ~0 D1 z# ~0 _
import random
. e7 @. f" p- q: x& M# Vimport argparse9 h2 p) L5 u& S. x
7 C( w! w( z7 w6 a4 j: Z# 初始化鞋子! U! C, }" ?% Y' U, s5 w
def init_shoe(decks=8):: B& e! M9 z+ X7 E
# 每副牌52张,8副共416张& M q/ w0 ^" `) m# o
shoe = []
/ H1 O; B/ X _ for _ in range(decks):
* K- f! y8 j) [0 t/ t( c8 m- o shoe += ['P'] * 24 + ['B'] * 24 + ['T'] * 4 # 简化:庄24, 闲24, 和4
& Y; Y5 K$ Q9 u$ T random.shuffle(shoe)
1 ?4 U0 S: D& F$ _ return shoe; ^. _3 ?) r+ y. Y7 X u5 d0 |
2 D7 ? ?/ a7 x
# 发一手& |* y1 H( o; N' g" D% Q' ?. L
def deal_hand(shoe):+ O# r$ g4 P1 ]6 e9 ~$ @. g! {
if len(shoe) < 6:9 U8 v. N- V4 a" [* w0 [; H
shoe[:] = init_shoe()9 G, a& n1 W% L; r# N" f
return shoe.pop()/ a( ]+ O5 E9 E+ y& ^8 i1 a' o- a
( ^8 o O t2 [+ [& B
# 模拟下注法 A
2 U" q2 w' p7 Adef simulate_strategy_A(num_shoes=1000, commission_on=True):
, K* O1 ~4 ?5 q y. q" l8 V profit = 0
* A; o, z4 ~7 i4 U9 F8 U+ J commission_paid = 07 b) ]( w' [. ]; I3 P
shoe = init_shoe()
2 ?* ?( O* i u; } ' M7 b( [" o+ g7 G
# 策略参数
; v" r. ~- H4 e& D sequence = [1, 2, 3, 5, 8, 13, 21] # 示例进级: X9 U* g9 _2 w, S3 E, w
stage = 0
8 L) H2 W0 A1 E/ ~' I7 t target_side = "B" # 起手投注庄
5 N& k' B# m/ O7 S3 p" {" |% p3 s; U( y; p* B. X# ^! u
while num_shoes > 0:
8 P* o& _2 h, ^4 j' [ result = deal_hand(shoe)5 f( [* r" }* u7 }9 i5 Q
$ i# \# P: Q' N( {+ N if result == 'T':
6 x( P7 \! y8 v$ u) _' Q # 遇到和,不输不赢,重投
1 S2 g( E" o7 [ continue
9 ^7 Q7 _, U5 N; p3 ]6 P) D0 R3 y- `- ]
bet = sequence[stage]
0 j/ m% \8 ] G# w
! h k* z+ ] z& |) t# t' h7 T% j if result == target_side:
& S3 s7 z7 w+ f; f/ G. {* Y # 赢/ {- I6 @- q. ?- K" |& c" [$ j
win_amount = bet" g9 v% p* a- n
if target_side == "B" and commission_on:
- S8 t+ y* ^8 G/ F$ i' H% g% K6 q win_amount *= 0.95 # 庄赢扣5%抽水# p' h$ r6 c- ]$ `" j: F
commission_paid += bet * 0.054 x4 ?3 Z! w# V/ `
profit += win_amount
: u/ M' f+ e. k' L8 n stage = 0 # reset
X' T& e2 v6 w' H1 O target_side = "B" if target_side == "B" else "B" # 固定庄(A策略固定)
2 i1 ?) b: F! K4 h5 {2 T else:. H* V: @- p4 o8 V+ r
# 输
+ E+ B" `; n) y$ b7 d profit -= bet* D Z7 Z8 H# a7 M- D
stage += 1
9 Z- D$ q) J& V if stage >= len(sequence):( B+ Q: n) f9 M9 X% D
stage = 0 # 断缆reset' t+ R8 s& ~7 G" P' b ~8 E
num_shoes -= 1
, o2 h. `0 `- [ B- Q4 M, M$ i% X0 E4 Y3 V
return profit, commission_paid2 U. v& Y5 q' P2 n+ |: N. ~
) Q8 y" @+ R, A; F& s6 y' O
# 设置命令行解析 q' g+ P1 L5 c6 N- O2 Z5 @
def main():
+ h& W6 E) E. K0 i P; X( B* d parser = argparse.ArgumentParser(description="Simulate Baccarat strategy with commission on/off.")
# U, e" b, H# Z parser.add_argument('--commission', choices=['on', 'off'], default='on', help="Enable or disable commission on banker wins.")
+ S: Z9 _0 \% L; j2 [) L$ x7 u1 c2 d) A parser.add_argument('--shoes', type=int, default=1000, help="Number of shoes to simulate.")
& K7 }0 |. X$ q4 x) ]7 P $ O7 S' s8 h: b: e- J
args = parser.parse_args()7 I7 d* J- \; Y
3 u0 h7 }: w) }1 R; W2 N0 }/ x
# 抽水开关:开启或关闭2 |& p& h2 l5 B: r" c9 _" [; q
commission_on = args.commission == 'on'
0 L9 L5 f ^- L4 [4 y/ y$ A % K5 |1 t, _, I' M
result, commission = simulate_strategy_A(num_shoes=args.shoes, commission_on=commission_on), n* {* _, P+ g7 S$ J9 s; \! }! Q
print(f"最终盈利: {result:.2f}")1 m2 O7 ^3 I D' c; V
print(f"累计抽水: {commission:.2f}")+ u, W' j- ]3 F4 S* D8 E5 k# b
1 L; ]4 z5 r6 T: |if __name__ == "__main__":
+ K7 x6 g/ \ ]6 \ main()
) w/ n. E4 \! e4 m! t, f, j) C! ~, b4 _% g! j
- i/ C" F. N3 `
步骤 2. 运行) C7 L; M4 \" J9 X
* s0 _. j9 U+ g6 z
在命令行里进入文件所在的文件夹,例如:
! r; R& j& Q9 G& J! Kcd C:\Users\你的名字\Desktop
+ `9 H" k3 I" |3 i- \% `$ tpython baccarat_sim.py
8 N% e) S, h7 r8 L& l
$ W: m1 O. `2 \5 w; t& q6 u h& x, N7 N输出会显示:
; Q) E4 H& e: y7 a/ J1 _; f! W# l" f3 O4 p7 J. Z7 g
累计盈亏: xxx3 k4 Z$ O: r7 u/ Y7 ]' Q
累计抽水: yyy7 p' F; q A" U& a3 R
-------------------------------------
5 x- u. p* s) R* M( u/ e实例:试跑3次,
& m% P) N5 C6 y; Q7 {- D; f* u+ D+ oC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py # s/ G! I5 t" C1 O
最终盈利: -5360.35
6 u3 L$ m- _: Q& a' A8 m" ~累计抽水: 5176.35 " ]/ [/ H( i5 S% h9 M
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
A4 ~ F1 ?2 {* W最终盈利: -5661.65
6 e* H5 x" B0 c( x# N* t累计抽水: 5174.65 " B4 P: S# G. v$ B9 p
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py $ r4 Y' ]1 o, j$ f$ I, ]( ~
最终盈利: -4244.50
2 M7 h# y$ [4 x, e9 d累计抽水: 5176.50( @. @8 ^- ^/ J! o' M+ D$ ?+ j
" E/ W0 ]6 V! [7 K; c' H
说明你的 Python 已经能正常跑模拟了。结果也很有参考性:
$ s8 i/ G% S! s' I: p9 v/ ]/ ]7 ~4 `# p5 f
累计抽水固定在 ~5175 左右 → 这和你设置的「抽水开关 ON」一致,因为你每手下注金额相同(例如 8 单位),程序是按 Banker 抽 5% 计算的,所以长期下来,抽水会稳定在一个范围。
2 w% E3 n# Q" r# Y( i, p1 A- W2 Y. Z9 F
最终盈利为负数(-5360、-5661、-4244)→ 这说明在 100,000 局的模拟中,哪怕加上和局不计,下注方向固定,数学期望依然是亏损。9 P1 D0 k$ O1 O. B0 F
这条缆不能直接用,用了会输。必须改缆法,或改缆法并且改下注规则。. k2 `! {9 i4 q. R
人们喜欢举例盈利,有吸引或牛逼的效果。。。用亏损的例子,可以真实告诉你,道阻且长不容易。 K* `$ Y- y' I2 Z1 ~
但是别沮丧,办法总比困难多。只是,你自己悟的,是最好的。. n) i/ P# Z/ X) H
- {# j/ r! p. z2 z0 S, c
启发,,,可以变更缆法,改变庄闲比例,指定胜负路。。。。(待续) |
|