|
|
楼主 |
发表于 2025-10-31 11:15
|
显示全部楼层
本帖最后由 Banker 于 2025-10-31 11:17 编辑 3 h5 _5 J6 i" ^' n+ _
1 f8 P8 i& d5 E, C% A
可用Excel,逐手模拟过程(但 Excel 跑不了 100000 靴,会非常卡)。7 {4 ]' h' L- `: w' o% l
Excel 更适合 直观小样本测试,Python 才能跑大样本,Python 可以试试N万-1亿靴,10亿靴,有没有没必要?你高兴就好。
9 u( e4 m, e* ^. {4 R) _* m
" c8 K: b0 S+ e2 M1 K6 r在你电脑上运行 Python 模拟器 (版本3.0以上,若没有,在Python官网下载安装)
' { a( B: k; a- m假设你已经安装了 Python 3.x(在命令行里输入 python --version 或 py --version 看看有没有)。
3 }. s$ q, A! U, ?% r先写一个最基础的 百家乐投注策略模拟器(自己定义的规则)。
! a' F; ?+ L1 U. @' k6 g
& v6 O' G$ ~* G0 J( @" D步骤 1. 新建一个 Python 文件3 W0 U8 S$ w" X1 i. R& F6 {! t3 B
打开记事本(或 VSCode、Notepad++ 都行,我用记事本)
$ S; [3 C9 }9 f把下面的代码复制进去。
4 |8 v5 a% e& Z. v保存成 baccarat_sim.py (注意后缀是 .py)。
: Y/ J, w/ ]: y. L- b) x% ~( \6 W6 }9 F( }/ V7 D; }6 u9 l
import random* S# l, e( g: Y) \
import argparse
: [$ p- L) o$ I5 u
; X) C7 q t/ ~6 r; J# 初始化鞋子) i6 h9 V; G" }5 R* N4 s+ Q+ `
def init_shoe(decks=8):; ~" m: D5 R; ^4 m* k8 i
# 每副牌52张,8副共416张
. {5 R* c* o3 O. M! } shoe = []5 z1 y8 [' O, t$ ^1 y* I; B, L" b
for _ in range(decks):: Y X/ ~: i: K: F- t
shoe += ['P'] * 24 + ['B'] * 24 + ['T'] * 4 # 简化:庄24, 闲24, 和47 S( x& r% ?7 `' q8 b1 n) K( d
random.shuffle(shoe)
& s" }; M# D4 a7 O: q: w! a return shoe: t* Z1 ^* j3 s, ~5 P: X
! B& o! _0 f. `) ]
# 发一手$ B- R$ \/ z8 {# z" u
def deal_hand(shoe):" I5 ?, i- Y1 `+ l. S$ H
if len(shoe) < 6:
$ S& a: m- s- n shoe[:] = init_shoe()
; @) a$ S5 R2 a' z4 K5 _7 f. E return shoe.pop()! h( h6 L! g4 X4 [5 n
* r9 G! F- v4 \+ @& K# 模拟下注法 A/ m9 P7 f1 d8 C/ h. j! a6 k0 K
def simulate_strategy_A(num_shoes=1000, commission_on=True):
7 I$ ?0 b" B' d* T profit = 0
. D+ W/ J" w2 O commission_paid = 0
. c9 L( w( p9 ] shoe = init_shoe()% d1 I2 _5 E) u; S0 A
2 \0 ^$ e% ^; a7 b1 C6 o # 策略参数1 o- k% z1 ]9 X* S5 _ `5 R; ^
sequence = [1, 2, 3, 5, 8, 13, 21] # 示例进级
, H* \: s& G. z, X, V" X0 j stage = 0, V6 _5 i0 h# b: I' y1 o s& O0 G
target_side = "B" # 起手投注庄" t6 [) a8 G1 x. n
* d: i( {( A. S# k3 k7 n
while num_shoes > 0:
! ]; `$ B' ~! w- n; w d# U result = deal_hand(shoe). I# L% s1 k/ R
- m W" u9 G% F7 n' J
if result == 'T': 2 b" }6 {$ Y5 g3 ]4 m+ j0 C
# 遇到和,不输不赢,重投
F0 d* o4 C. U1 y continue
6 x7 J% j3 e0 p" S: r4 \
+ c: d% I1 L* s. r bet = sequence[stage]- T; W& a: s( X/ B' P6 {
. f2 D, S- A0 X' e; N% K/ I if result == target_side:
( q0 w' w! L8 U% ^. ~ # 赢) f* {" O" d# Q4 L
win_amount = bet
0 b! i! { A! E8 l) s if target_side == "B" and commission_on:
1 e2 [* D, d% K& q9 V. F win_amount *= 0.95 # 庄赢扣5%抽水/ Y" A& J0 d; x, H: o k- @! v
commission_paid += bet * 0.05
+ m, n6 q6 y* _5 }8 }2 ] d* y) q7 s2 s5 s profit += win_amount
$ ?: v: Y* d& C! O+ s stage = 0 # reset
# ~8 L2 h* J/ ^5 G target_side = "B" if target_side == "B" else "B" # 固定庄(A策略固定)
) S, A j3 `' D; Q: K P; ] else:, V; R( Q$ D2 j) y2 r( w
# 输0 P# }7 v j z7 [ j
profit -= bet
+ c5 e6 D/ g( X9 L9 \; ] stage += 1
. H; b6 U0 B$ n0 _9 E3 t/ ?5 N8 g if stage >= len(sequence):3 q5 [' n* D) I, O$ y
stage = 0 # 断缆reset
4 S1 ?6 P8 K" X/ }3 q3 f+ Q num_shoes -= 1. t$ X' I, o$ D/ Q. \
. w+ C; }9 D. M3 t. t* E; z$ F! f5 G5 T
return profit, commission_paid
: }2 M0 I; e7 d" g( i$ }5 w
, O0 M$ }/ Q9 D! \8 j8 h# 设置命令行解析
: E$ X5 i* X# jdef main():, [: N8 u8 q3 _# z; Y- P5 C
parser = argparse.ArgumentParser(description="Simulate Baccarat strategy with commission on/off."): H& e0 U+ Z& `4 q8 U" I1 H: l6 c1 s
parser.add_argument('--commission', choices=['on', 'off'], default='on', help="Enable or disable commission on banker wins.")3 z5 K8 Q" A; ?- D" M
parser.add_argument('--shoes', type=int, default=1000, help="Number of shoes to simulate.")
0 t2 o- b( c3 w + M; M+ Y% Z8 ?; E
args = parser.parse_args()
+ e7 v* p0 o, P& ^6 q/ k* d7 `$ ?! ]
$ g5 x; N5 B# ] # 抽水开关:开启或关闭" r3 g9 j! n) m0 l
commission_on = args.commission == 'on', O" s8 R" k, }+ x; a0 Z7 {4 y+ N' a
( Y% A; s- e3 H
result, commission = simulate_strategy_A(num_shoes=args.shoes, commission_on=commission_on)
" Z6 {9 q4 g% ?5 ` T print(f"最终盈利: {result:.2f}")- K) F$ ~ p. r2 h( E
print(f"累计抽水: {commission:.2f}")6 X$ Y% v+ X3 `$ r/ B9 d* _
# K# b0 Z) v$ B% [" oif __name__ == "__main__":
% ]: x! N# K/ H7 n) C& E2 U1 q main()
# \: [# ^, X" B. Z+ n7 M. [$ t) i* z" e k2 m+ z& S1 S
0 K) r& u/ `$ X6 S3 [1 r
步骤 2. 运行0 p$ `. v. O4 R. }2 A2 y
6 l2 f1 ?) c. S/ T在命令行里进入文件所在的文件夹,例如:: d* g: o6 M& y2 A
cd C:\Users\你的名字\Desktop0 Z4 U4 J- P- r5 i; O3 [
python baccarat_sim.py% G \5 ]" T: t; u6 V" ~
5 r9 S8 K2 t$ O5 S7 \+ A% }9 A
输出会显示:0 M* S9 v% ]% s [, d
9 N n) @" V# {: ?
累计盈亏: xxx
) \- ~0 Q. }/ W: Z+ y' T累计抽水: yyy
4 S" E; V. K5 a9 `- B-------------------------------------
' m4 D0 x9 g( \& S0 ]& K, y实例:试跑3次,
! r5 y: ~' y9 ^8 C- g1 }C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py . A7 k* e: {* O. n
最终盈利: -5360.35 ! v8 ^* Q) z# L/ u7 F" J
累计抽水: 5176.35 " k* F3 D$ c, f* o
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py * w) U F4 F+ W& X, Q6 q7 j
最终盈利: -5661.65
1 X( N) @& l( a9 K0 P4 Z' b累计抽水: 5174.65 ( K4 M" l3 t$ A. o2 B. m6 u
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py m2 {! t- Z/ s2 |
最终盈利: -4244.50 * V2 h- h! t% v" H
累计抽水: 5176.500 d* v, `9 E0 i7 f' f4 h
9 o; x$ O1 R. P( l2 L# u$ f$ H, {
说明你的 Python 已经能正常跑模拟了。结果也很有参考性:% w, `3 W+ t9 V, B! V, S
1 R, N9 l2 q/ ~; `, M7 W- Z
累计抽水固定在 ~5175 左右 → 这和你设置的「抽水开关 ON」一致,因为你每手下注金额相同(例如 8 单位),程序是按 Banker 抽 5% 计算的,所以长期下来,抽水会稳定在一个范围。
6 F A1 |; c% T5 V0 z/ {1 L" z, e% M
$ `, H( H0 }+ s% L最终盈利为负数(-5360、-5661、-4244)→ 这说明在 100,000 局的模拟中,哪怕加上和局不计,下注方向固定,数学期望依然是亏损。
- ^2 r3 W& w: r这条缆不能直接用,用了会输。必须改缆法,或改缆法并且改下注规则。; G" L: K& y: o# a. K3 ]
人们喜欢举例盈利,有吸引或牛逼的效果。。。用亏损的例子,可以真实告诉你,道阻且长不容易。' s& U& S' H* v/ D9 t# g( m
但是别沮丧,办法总比困难多。只是,你自己悟的,是最好的。+ X% I$ r7 ~! j' a
, D2 ]" E& Z& u3 a启发,,,可以变更缆法,改变庄闲比例,指定胜负路。。。。(待续) |
|