|
|
楼主 |
发表于 2025-10-31 11:15
|
显示全部楼层
本帖最后由 Banker 于 2025-10-31 11:17 编辑
# k8 U( |8 U5 ^6 R) B7 T+ \" D) I4 W8 B8 u, o. m' Q+ `
可用Excel,逐手模拟过程(但 Excel 跑不了 100000 靴,会非常卡)。7 g/ X& x) L* D1 F% W) k
Excel 更适合 直观小样本测试,Python 才能跑大样本,Python 可以试试N万-1亿靴,10亿靴,有没有没必要?你高兴就好。
1 |7 C! N9 J; h& k# U! q( D: |3 \- I$ }: c
在你电脑上运行 Python 模拟器 (版本3.0以上,若没有,在Python官网下载安装)
* {( j: i: R. Q! `. w假设你已经安装了 Python 3.x(在命令行里输入 python --version 或 py --version 看看有没有)。
# q# k; [- l9 v0 ~% S8 b% K$ f7 }" H先写一个最基础的 百家乐投注策略模拟器(自己定义的规则)。
( {1 b2 s7 U2 R
' J7 r0 G3 c* z5 ?; h6 f& Z步骤 1. 新建一个 Python 文件
/ o+ H$ I0 w3 V. {$ s! M打开记事本(或 VSCode、Notepad++ 都行,我用记事本)
2 Q. |5 e+ m" b把下面的代码复制进去。
4 Q) Z! z* n+ @# e2 T4 t! {& R保存成 baccarat_sim.py (注意后缀是 .py)。: a- E) _+ z9 I' ]7 a2 Q9 A
4 e- T+ P4 l1 w) u9 O( K0 ~. O K8 Wimport random, G6 y9 k- L! c; K" @0 M2 X" t/ m
import argparse
- G' g6 s/ D: i7 s- X- ^% Z
* `7 e6 l+ M# |7 ^7 N# 初始化鞋子
( r2 C/ y7 @9 |; a* [3 Y. Xdef init_shoe(decks=8):
) R9 e7 Q+ [+ V5 g) i- e. w# t # 每副牌52张,8副共416张
# M: t4 n/ m* J3 z$ M/ L shoe = []+ c) ~7 L$ M# y& C0 J2 {, _$ W' e! u
for _ in range(decks):
3 E3 X$ {/ Z$ t6 ?! ^' \ shoe += ['P'] * 24 + ['B'] * 24 + ['T'] * 4 # 简化:庄24, 闲24, 和4! q8 x, k0 j, n; ]' T- s
random.shuffle(shoe)
0 N3 V8 M3 \! m return shoe$ v. g, q, N: ]) h2 s
: Q' A4 H0 |7 ^7 Y; F4 ~: J
# 发一手' t# C- P5 Q0 w. L
def deal_hand(shoe):. N$ f& f1 r5 H+ J+ u6 |
if len(shoe) < 6:
, y# \& J+ X2 X# r/ U3 N shoe[:] = init_shoe()
4 T/ A6 B& v3 d0 V" ^- Q return shoe.pop(): Z; d: \3 t/ I0 F
+ J R( u, D. @
# 模拟下注法 A
5 h: l& l( w9 j& z# N+ Xdef simulate_strategy_A(num_shoes=1000, commission_on=True):
# ^! }3 y/ h/ G# J profit = 07 g+ c0 z7 b- z8 L5 p' }
commission_paid = 0! G6 b* t8 E- W
shoe = init_shoe(); T9 P& t: f: ?7 A2 {
- p8 f" {& N4 `
# 策略参数
0 C9 I/ V/ B' b( R1 h: N/ h sequence = [1, 2, 3, 5, 8, 13, 21] # 示例进级 E) f) Q! I8 H* X5 f6 l
stage = 0
( S5 ~" f k/ A {2 P target_side = "B" # 起手投注庄0 V, p* ?4 ?/ C" `& e! W5 n1 M
, {+ z' M0 C, A' z( d
while num_shoes > 0:9 J" C4 e" b( p# v9 y7 i
result = deal_hand(shoe)3 y6 Z& q0 R: U1 ]( x5 S" \9 t
, ~) z1 r7 T2 q7 M7 }$ x9 S5 x* R
if result == 'T':
$ d1 w* O, K& ^$ s) z9 F* E2 i # 遇到和,不输不赢,重投0 h! s' z ^, N
continue
' ` u! _, @) Z k6 J! \) B3 S% W7 A4 Z5 G* y1 C
bet = sequence[stage], B8 V( H2 V; O
% `( [) D2 g9 @ if result == target_side:
; ^+ k n3 a$ n2 J1 ? # 赢6 o% w( {4 L2 E5 U+ E0 @9 n
win_amount = bet' Z9 z6 h3 ?: D/ G
if target_side == "B" and commission_on:+ S0 q" f! R0 _" d6 H$ ]0 B8 a4 Q
win_amount *= 0.95 # 庄赢扣5%抽水9 J# k* z6 f2 p& C& Q. o: b U
commission_paid += bet * 0.05( Y1 J2 p2 J9 K
profit += win_amount
- L# b, q2 n% B3 D: g3 s0 S stage = 0 # reset9 u) h- m, j. y3 R/ i: |1 Y6 P
target_side = "B" if target_side == "B" else "B" # 固定庄(A策略固定)
" u; {5 O/ l) o) X5 q" g else:
; F+ F3 F3 _# c- L: r # 输
* m- f& y+ I; v) t) o+ { profit -= bet% h3 \9 e8 I [ w6 G
stage += 17 V" m6 `, l6 N X3 J5 V0 f
if stage >= len(sequence):
m) j4 h" X& ^4 Z" Z/ X; ^, q stage = 0 # 断缆reset' ~+ u0 Y q# k$ U1 I
num_shoes -= 1* P! H3 K; }7 N7 Y
" i! X: {# ^9 A1 n$ r
return profit, commission_paid
. Y+ t/ O4 z) ~( p8 N5 \& E( M% h ^5 l9 j7 }9 Z
# 设置命令行解析( {6 w# _8 K' c; U p) }3 m; P1 }
def main():
3 t0 D) t% B8 z" @7 t parser = argparse.ArgumentParser(description="Simulate Baccarat strategy with commission on/off.")( S; n3 j! q M- Z Z! Y$ y
parser.add_argument('--commission', choices=['on', 'off'], default='on', help="Enable or disable commission on banker wins.")2 w5 `: e3 O8 l- F: I
parser.add_argument('--shoes', type=int, default=1000, help="Number of shoes to simulate.")
7 J" H8 K# p$ F& ^9 ~- X) e' g + }, t4 u4 I6 r+ |7 m% I$ D
args = parser.parse_args()3 \& n. ^% |- e5 g/ C6 T* Q3 C; z1 b
% x, {; ?# K' N
# 抽水开关:开启或关闭
4 k2 d9 p7 p/ E& f0 O commission_on = args.commission == 'on'0 i" ^6 {* f; V$ ^& o8 R, D6 x7 }3 o
, u% ^( c6 o7 E/ _4 b9 O+ v result, commission = simulate_strategy_A(num_shoes=args.shoes, commission_on=commission_on)
! e7 o6 [: G0 t+ c print(f"最终盈利: {result:.2f}")
' h; n( Y. J9 E3 p9 {3 m& j: w' v0 v print(f"累计抽水: {commission:.2f}")) W7 N- w7 `* i
: R+ C* O; c/ F! {) w
if __name__ == "__main__":7 F; j% ?- {4 s
main(); y' s: x2 B3 T) _0 P
" l3 j% I& c6 Q; p: H! G% z/ Y/ u$ F' d- Q% E$ n
步骤 2. 运行
: `$ |) E- k$ d" D# U
, m6 k' [% z' \2 T在命令行里进入文件所在的文件夹,例如:
& e& Z8 W: J& Y% O& xcd C:\Users\你的名字\Desktop4 n3 z6 X, a* ?- w
python baccarat_sim.py
' e' D7 h8 E& D: {2 q/ u' n" ?" N9 S% A3 ^$ O2 @! G% k
输出会显示:; j. v- h) U" d9 y0 V; [# L# o- R
, G6 \9 Y8 u9 `2 a% K$ M1 S累计盈亏: xxx
q# [ k8 C, L- E# K* ?) S累计抽水: yyy# U: }" i+ P7 i9 A, g
-------------------------------------' Q. O7 c" x8 j3 ]2 E6 y
实例:试跑3次,
* Y8 i; b, \4 v6 vC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
. [$ {$ y* P7 U最终盈利: -5360.35
& r8 g- V1 }1 Q7 K累计抽水: 5176.35
4 Q7 z4 l8 b# PC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
( f! b+ g8 @6 a7 y! ?+ g最终盈利: -5661.65 5 r# p: J& `: Z5 d
累计抽水: 5174.65
+ |: o9 S1 ]/ U. D" kC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
( Y% f3 X8 h- H y1 t最终盈利: -4244.50 9 @. v' d) m" j5 B- V2 T' N. X5 h
累计抽水: 5176.50
- V' M! T/ Q! P, B1 p! |0 h, m) t! `: n! `& q
说明你的 Python 已经能正常跑模拟了。结果也很有参考性:9 ^- A$ D- K6 R0 p" N3 M% a, H
+ N0 C5 J; K* ?4 Y+ ]累计抽水固定在 ~5175 左右 → 这和你设置的「抽水开关 ON」一致,因为你每手下注金额相同(例如 8 单位),程序是按 Banker 抽 5% 计算的,所以长期下来,抽水会稳定在一个范围。
. s: D0 t" O K
, i; D& r0 l# Q% d6 [" {. K最终盈利为负数(-5360、-5661、-4244)→ 这说明在 100,000 局的模拟中,哪怕加上和局不计,下注方向固定,数学期望依然是亏损。
3 L3 d. V5 x! K# i6 Q这条缆不能直接用,用了会输。必须改缆法,或改缆法并且改下注规则。# \' w1 l1 d+ p# Q9 ^; `7 H1 x
人们喜欢举例盈利,有吸引或牛逼的效果。。。用亏损的例子,可以真实告诉你,道阻且长不容易。; v" R% j) u3 r. y0 J+ p# ~
但是别沮丧,办法总比困难多。只是,你自己悟的,是最好的。
5 O7 x' t0 @/ V8 w* g' H7 z2 ?; O
6 c7 N6 L G1 h启发,,,可以变更缆法,改变庄闲比例,指定胜负路。。。。(待续) |
|