|
|
楼主 |
发表于 2025-10-31 11:15
|
显示全部楼层
本帖最后由 Banker 于 2025-10-31 11:17 编辑
& \* V8 Z- {9 X: i: H
1 G) P) n9 I) ]" H+ z可用Excel,逐手模拟过程(但 Excel 跑不了 100000 靴,会非常卡)。
, \ `0 {) s. KExcel 更适合 直观小样本测试,Python 才能跑大样本,Python 可以试试N万-1亿靴,10亿靴,有没有没必要?你高兴就好。! Y4 d: W- R$ w4 q
' N$ m; z4 H+ e% m: E/ m
在你电脑上运行 Python 模拟器 (版本3.0以上,若没有,在Python官网下载安装)
' T6 S5 c. o- ?1 Z q+ b假设你已经安装了 Python 3.x(在命令行里输入 python --version 或 py --version 看看有没有)。
{% K; K8 F& G9 f) t1 P% y先写一个最基础的 百家乐投注策略模拟器(自己定义的规则)。. Y+ I0 J/ y9 t) b, z' Y. B* [
. B1 _$ `- b2 n+ b: Y3 i0 n步骤 1. 新建一个 Python 文件& N& y% o$ |: n% U% n+ X+ I
打开记事本(或 VSCode、Notepad++ 都行,我用记事本): {* E& G4 I0 ~$ e: r3 w
把下面的代码复制进去。
6 x- s+ s# W- s保存成 baccarat_sim.py (注意后缀是 .py)。
( F; u s3 u' Y9 ? y
8 |6 H6 `7 F% `6 a. s1 Kimport random
9 A$ Y4 d c- p& C( H# @import argparse2 K' C/ E+ ^ M4 n$ k3 ?0 L
; @/ V9 x- `8 C i. v# 初始化鞋子
. o) t. K3 m3 {0 Y" X% m5 [' udef init_shoe(decks=8):, q5 |; q2 J U
# 每副牌52张,8副共416张
4 F. N6 @8 N0 ^. L1 M% t shoe = []
* R0 C6 D$ \ n for _ in range(decks):; K/ L" d- ~6 Y; e
shoe += ['P'] * 24 + ['B'] * 24 + ['T'] * 4 # 简化:庄24, 闲24, 和45 y2 \! [. r5 A$ m+ C+ V
random.shuffle(shoe)
$ F4 j1 y* N; M% I: ]( R& r7 N5 G return shoe
7 G9 A# F+ [% Q2 E/ H5 n2 U; P7 z; j/ F: ]1 K; | @& Q
# 发一手
7 M& P) E, Z4 k# U7 X! x' _2 k+ wdef deal_hand(shoe):
. w$ X$ J2 l+ d( v/ U if len(shoe) < 6:
- O2 U/ k5 b; N/ j& L shoe[:] = init_shoe()
* h0 E/ Z# _0 w# Z return shoe.pop(): t- ]* ^ D$ V# n: Q; F' b8 _
! ]1 E h; B' K$ l( z# 模拟下注法 A; R i: i5 l) \. C, q+ ~* i# m, U
def simulate_strategy_A(num_shoes=1000, commission_on=True):1 K2 }1 d" I% ]8 y( Z
profit = 06 E. ?- e, t- Q/ p
commission_paid = 0% r- }9 D: I7 Y5 K) }1 D2 l
shoe = init_shoe()' S9 S$ I p: \8 ~
0 L9 g, p3 r: U7 v7 G! d6 F. h ]
# 策略参数9 _( D4 v7 H# a6 s
sequence = [1, 2, 3, 5, 8, 13, 21] # 示例进级% O( E' z3 @/ U* l7 E
stage = 0
$ b) M( W: O$ R( L @ target_side = "B" # 起手投注庄; w4 X4 U; s8 N' n4 A
) D9 S4 J, i) E |- N1 f2 |
while num_shoes > 0:
+ d! K# D) e5 a- n result = deal_hand(shoe)' `# f# n* b) ^: M$ W9 e9 \- x/ \' Z
; @9 Q0 p2 g0 R5 F& W# u7 q if result == 'T': 8 m* @) G! }% @, P, n
# 遇到和,不输不赢,重投
+ X# ^5 ^( y7 h3 n% p* f# ? continue. [ Z/ B, d* P- D5 C3 M8 e
y8 B1 R6 U! R7 |3 M
bet = sequence[stage]
& X) d% U$ f. Z2 b1 _4 g
: s9 c9 S+ X7 M: E+ p" f) K% L if result == target_side:% n7 a* o- s$ \2 h" k
# 赢
: u) h& L* r. ?& K) O win_amount = bet2 L, x& |6 i7 `
if target_side == "B" and commission_on:# P5 F1 s X) e- A* `+ g; p! b
win_amount *= 0.95 # 庄赢扣5%抽水+ H7 Q6 }+ c' F# G( j% b& Y" [
commission_paid += bet * 0.054 q }3 N; X7 T6 E6 e3 D
profit += win_amount
5 N6 i. r* p4 \) _ t! ]# u& d2 n4 t stage = 0 # reset
1 A7 }+ m" Y$ C. }% ^ target_side = "B" if target_side == "B" else "B" # 固定庄(A策略固定)! D8 ]0 v' I6 B# M+ n+ Y! r2 H9 K
else:5 O0 w1 l! T0 R. F5 }- p
# 输
. r k& v# ?3 d profit -= bet
1 o O4 y# @* Q stage += 1* ]; h* I+ F$ k" k5 Z, ^ S# Y
if stage >= len(sequence):! L2 @' `" g3 d6 P
stage = 0 # 断缆reset7 H" m2 r- j1 A7 w* `/ U
num_shoes -= 1& t% F: M- _% R8 x
0 f4 o2 V/ d2 Z return profit, commission_paid
, W) S$ m8 Y4 H1 _, u+ x
6 D8 H, _3 |4 i k, t) I# 设置命令行解析
3 e) f0 |! l, c, w9 s- Ydef main():
5 p1 a) L# D$ `4 e6 _ parser = argparse.ArgumentParser(description="Simulate Baccarat strategy with commission on/off.")
2 B8 f3 p) q" r( N T parser.add_argument('--commission', choices=['on', 'off'], default='on', help="Enable or disable commission on banker wins.")
b& c/ W# F$ k4 |1 F- F parser.add_argument('--shoes', type=int, default=1000, help="Number of shoes to simulate.")+ @- R& b' A: n/ y5 h a
6 j+ X# N$ t" D
args = parser.parse_args()
: S' A" R, _1 U7 `" \4 E. Z " K/ m" X; x- }2 H; N' m7 I/ b9 H
# 抽水开关:开启或关闭
& Q7 P O; I2 R! o2 y commission_on = args.commission == 'on'
- P, }- F: A2 E: }9 S. A 2 `4 G) j" F& {# e) G# Q- e
result, commission = simulate_strategy_A(num_shoes=args.shoes, commission_on=commission_on)
* @( {, E* c1 |; V3 @' z0 } print(f"最终盈利: {result:.2f}")
$ B6 ]" K5 T9 t print(f"累计抽水: {commission:.2f}"), w" w- @7 e& ~) S9 s' H
/ |# x8 y- @- Y! iif __name__ == "__main__":
9 p2 g* H& t/ \* h% m main()
3 t7 E: I4 F6 s! f* F
4 O1 {2 t2 t9 d1 o1 V9 W' E9 s9 n2 r$ B
步骤 2. 运行' a* f/ N! {4 K; ?
0 l4 n7 ^2 n, w8 ]! `, v
在命令行里进入文件所在的文件夹,例如:2 h; ~( Q" v( {2 N A
cd C:\Users\你的名字\Desktop8 d+ g7 T! V, V+ H4 } o
python baccarat_sim.py
: v8 S! c; ~5 t7 J+ Y R* @
* C: G }( F# s* C" r) x2 V3 m, [输出会显示:0 U) O' L `% e# p1 k
* ^- A: c+ r+ I" J/ E
累计盈亏: xxx
* N% m% D# i6 k$ _4 O1 r累计抽水: yyy0 @5 g- |8 Q% L
-------------------------------------; A; Y6 x' c) `7 D9 {- t
实例:试跑3次,
& M8 N; {/ R0 o/ b; P- U" ]6 DC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py - Z8 R8 n, Y1 M6 M7 {) z
最终盈利: -5360.35
: `3 m# U3 H, n- Q累计抽水: 5176.35 ; Q m, C$ X+ e5 o" W# z/ v
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
% k, H* i" i; u! `: v2 Y; o最终盈利: -5661.65
# p6 p% Z7 L. R, j累计抽水: 5174.65
( j6 S; _6 X9 P) _* s; QC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
/ x# m4 ~6 ]5 s/ D" u最终盈利: -4244.50 " w& X/ y& ?& P9 H8 C1 I
累计抽水: 5176.502 i5 B% ]! k1 F. h+ i0 n/ z
2 @0 w1 ^) a0 R: t- ]. n说明你的 Python 已经能正常跑模拟了。结果也很有参考性:
6 A5 O# F1 r8 O( g' ^- m/ [ V: l6 e2 \( `
累计抽水固定在 ~5175 左右 → 这和你设置的「抽水开关 ON」一致,因为你每手下注金额相同(例如 8 单位),程序是按 Banker 抽 5% 计算的,所以长期下来,抽水会稳定在一个范围。
* H. M) \$ u$ q# |2 t7 O* [/ T; v' s( U
最终盈利为负数(-5360、-5661、-4244)→ 这说明在 100,000 局的模拟中,哪怕加上和局不计,下注方向固定,数学期望依然是亏损。
" d7 K6 \) n( t这条缆不能直接用,用了会输。必须改缆法,或改缆法并且改下注规则。0 _1 ^- Q3 l) M, y' l9 d
人们喜欢举例盈利,有吸引或牛逼的效果。。。用亏损的例子,可以真实告诉你,道阻且长不容易。" t j) E8 S- I3 n
但是别沮丧,办法总比困难多。只是,你自己悟的,是最好的。, B" N5 J: p3 u( c5 _! e
% c; U' P( ^ X. I# U) i7 V9 g
启发,,,可以变更缆法,改变庄闲比例,指定胜负路。。。。(待续) |
|