|
|
楼主 |
发表于 2025-10-31 11:15
|
显示全部楼层
本帖最后由 Banker 于 2025-10-31 11:17 编辑
2 L9 z. I! n6 l6 w1 a
; Q6 ?4 Q. `+ i# ~* k) d+ H5 G可用Excel,逐手模拟过程(但 Excel 跑不了 100000 靴,会非常卡)。5 v$ C! Y1 t- ^4 X% U! T5 E
Excel 更适合 直观小样本测试,Python 才能跑大样本,Python 可以试试N万-1亿靴,10亿靴,有没有没必要?你高兴就好。
) O- h3 Q1 ~# B4 R+ P3 A8 U# V( Y: b0 i+ q6 v
在你电脑上运行 Python 模拟器 (版本3.0以上,若没有,在Python官网下载安装)
# m, Y: l! \7 M. F( P假设你已经安装了 Python 3.x(在命令行里输入 python --version 或 py --version 看看有没有)。
8 s$ [' _* e2 W9 g. l. G6 F先写一个最基础的 百家乐投注策略模拟器(自己定义的规则)。
! E; k2 O! w( u8 |# O) H7 V
. j/ P/ W, `3 v6 t7 [步骤 1. 新建一个 Python 文件
, L2 x+ T, y( z& |- L, h打开记事本(或 VSCode、Notepad++ 都行,我用记事本)' L" U! J) n* d* c# f; j
把下面的代码复制进去。7 Y0 w" A" L" H
保存成 baccarat_sim.py (注意后缀是 .py)。
8 H8 f) E2 e" |- b' u4 v& t: |" G: w5 X3 e M/ D2 [
import random
0 P: N8 k; t$ N' Pimport argparse
( @1 C% p3 R; L8 f( C$ X4 A; }, \* [- V( p
# 初始化鞋子5 ~/ }/ ~7 o- }
def init_shoe(decks=8):
+ x9 F$ y2 N5 p2 z. t # 每副牌52张,8副共416张0 z" m4 Z& i" ^+ s$ v
shoe = []
1 y! @( S+ C1 k; E) ^; \9 a for _ in range(decks):
0 ]+ K6 Z" z- G* M) ? shoe += ['P'] * 24 + ['B'] * 24 + ['T'] * 4 # 简化:庄24, 闲24, 和42 J) y% s" k1 ~ H3 y) r$ K9 X7 S4 v
random.shuffle(shoe)
7 P6 {+ ?2 B* F" @ return shoe
; T$ X1 t! v/ ^3 W
- [- ~' M9 A: O2 ^9 J7 H# V* A# 发一手
$ f- k1 j$ a7 t! h9 L/ Mdef deal_hand(shoe):& k# z: t9 ^- s4 K( n
if len(shoe) < 6:* J% u. u, |3 y* E: g4 v$ t
shoe[:] = init_shoe()% z! _& w8 t% B2 @( M
return shoe.pop() b4 Q% A2 a' I% a5 A
4 O) T# U2 C. B
# 模拟下注法 A6 b2 W0 t5 I1 H: C2 h
def simulate_strategy_A(num_shoes=1000, commission_on=True):
; v2 D- \/ Z! ` profit = 0
8 M: W- I' U3 }/ ~4 [: }/ y% A2 ^+ H1 U+ h commission_paid = 0
/ a9 U1 L" b) v; m7 J4 X; x- Z2 ^ shoe = init_shoe()7 }4 |5 t m2 s7 ~; J
' t$ c7 \* u- x/ ?9 R+ O
# 策略参数' \' ^) H. m" k2 g' F7 X+ g4 S
sequence = [1, 2, 3, 5, 8, 13, 21] # 示例进级
1 i3 S1 G3 ^- N! c: l stage = 0
" d4 T; K% g. u% \+ C! y target_side = "B" # 起手投注庄 z; e8 {: S. W3 z
% X; X" l, F) e5 M4 a while num_shoes > 0:
0 v; m( h* S+ e: n0 Z7 {( ` result = deal_hand(shoe)! D8 N; J/ z# r% m
3 y, e9 \! p9 s$ y, ]
if result == 'T':
$ W9 I# [$ }# L8 o( q" F" R # 遇到和,不输不赢,重投
+ j# Q+ q) w5 h6 u) m) I$ o% i continue
% X2 [9 {* D/ u0 t% a
3 B. d' t* b9 E+ R! T, w bet = sequence[stage]
; v( L: }0 Z% d7 H3 z- ~. e + I: z, s' |; i( ?- C2 c; r
if result == target_side:* T/ f) ~% F% S" | j' @
# 赢
* u& \7 J2 ~ R) N- x3 [( S win_amount = bet% {$ R" N+ @/ O! t2 Z
if target_side == "B" and commission_on:" e9 e* C2 J, U1 n& n9 l! H) w
win_amount *= 0.95 # 庄赢扣5%抽水
! \0 P# M) z& \: } commission_paid += bet * 0.05
: x/ g/ Z% H& }# Q. e) V profit += win_amount
% L! p8 ^ t& e! W7 l& L- d! s; [! y stage = 0 # reset
, }" `" ]/ }' O" V4 u- | target_side = "B" if target_side == "B" else "B" # 固定庄(A策略固定)
" m$ @- q& F8 s! T/ P9 }& q1 W else:
5 K( @. ?# R: J' n # 输$ k$ k M2 g i; K! D5 T
profit -= bet6 k1 \* b8 e( }( a
stage += 1
9 ]7 F( q* s0 M; i3 P3 q; T2 x if stage >= len(sequence):
! E" m. N- I+ ], v9 g! X! r stage = 0 # 断缆reset/ ~! X. W- f1 W! @" V) ^0 E
num_shoes -= 12 n6 s* T" z% G
; L2 t. v) c1 t0 O" Z r% a
return profit, commission_paid7 N; h2 q+ D: r) L; `
: y- M a5 @5 c1 z7 Y" J# 设置命令行解析
& a" p6 H* A( |& o+ R' D4 sdef main():7 _1 t: `( ~" V* @8 V
parser = argparse.ArgumentParser(description="Simulate Baccarat strategy with commission on/off.") b9 \$ P7 ?( j! Q6 [' M
parser.add_argument('--commission', choices=['on', 'off'], default='on', help="Enable or disable commission on banker wins.")4 R( a8 r. A4 E7 ]1 v
parser.add_argument('--shoes', type=int, default=1000, help="Number of shoes to simulate.")
- |) y3 l* f$ x9 ~6 A2 H, B: I
6 d: M! n) z" K7 W: t args = parser.parse_args()
9 a1 u* y8 H; S7 w 4 a$ q2 @$ V' x1 W7 [ w
# 抽水开关:开启或关闭
. n, s2 ?) A) }9 R% v commission_on = args.commission == 'on'6 [+ U! G9 e5 E @& M, H
. e# i# k2 d* J/ f% p4 p1 j
result, commission = simulate_strategy_A(num_shoes=args.shoes, commission_on=commission_on)
1 c& x+ e" T9 q6 t* [6 D print(f"最终盈利: {result:.2f}")2 |) c9 l( @$ A
print(f"累计抽水: {commission:.2f}")# P [9 v) y* n" Y% D) Q
0 [# `# i/ r: \( M- Hif __name__ == "__main__":
' g* H9 p3 I! n4 w: R main()- j* c. v2 H1 z$ T# V, p, Z: M
- }$ f& a% u2 s: R& n, w% N- D; _( y: N ^
步骤 2. 运行
( G U2 K5 I0 _2 M9 h1 L% M8 V4 S+ j. k* m
在命令行里进入文件所在的文件夹,例如:: t ]: _" }! g
cd C:\Users\你的名字\Desktop0 J/ Y0 y4 O, }+ z
python baccarat_sim.py- B6 Y9 @1 i2 a Z& ^1 Y9 O
1 V8 L+ q3 O5 s0 P' g: A& a
输出会显示:& I: H- Y9 f5 c
0 o$ \6 f) f. }2 T% g/ `) Y% O累计盈亏: xxx& }# s4 j3 S7 O5 R9 @3 I P! J
累计抽水: yyy5 \( ?1 d: W3 e: V _
-------------------------------------! r V" O0 p# C4 k/ v6 M
实例:试跑3次, 5 d& U2 l* I2 S* G" j
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py 2 v3 y% S( D( y
最终盈利: -5360.35
! r; W2 q; X# ~ E- M累计抽水: 5176.35
- v3 b9 [9 D& {5 \( b) I- C! u) nC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py % f% o1 w1 }. P& G2 c0 h7 H% e1 p
最终盈利: -5661.65
( [& K; j- f5 Q5 f累计抽水: 5174.65
\/ f8 v- g$ |# Y/ HC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py 5 Z% P' d$ d0 W. [8 c
最终盈利: -4244.50
+ I9 C* I& y* L: f累计抽水: 5176.50
% l' C6 W+ P+ Y& e. m7 ^+ R0 C
5 }# z9 {; D+ |7 z- z说明你的 Python 已经能正常跑模拟了。结果也很有参考性:8 {- i: L# R. T. \7 N
4 e$ r4 r L& T9 _/ w; _1 w
累计抽水固定在 ~5175 左右 → 这和你设置的「抽水开关 ON」一致,因为你每手下注金额相同(例如 8 单位),程序是按 Banker 抽 5% 计算的,所以长期下来,抽水会稳定在一个范围。6 L, y$ d$ |/ r" w4 L
8 [# f2 O9 w2 H( N; m最终盈利为负数(-5360、-5661、-4244)→ 这说明在 100,000 局的模拟中,哪怕加上和局不计,下注方向固定,数学期望依然是亏损。
: M$ c0 L8 Q; L这条缆不能直接用,用了会输。必须改缆法,或改缆法并且改下注规则。
- Z5 }2 A0 Y5 ?; r0 o人们喜欢举例盈利,有吸引或牛逼的效果。。。用亏损的例子,可以真实告诉你,道阻且长不容易。0 \0 }2 ^/ p8 a- n8 p4 e: F3 d. P3 P
但是别沮丧,办法总比困难多。只是,你自己悟的,是最好的。: B0 t4 t5 G# f+ e* m+ ?
" d$ M% T5 z) v4 M0 {6 V
启发,,,可以变更缆法,改变庄闲比例,指定胜负路。。。。(待续) |
|