|
|
楼主 |
发表于 2025-10-31 11:15
|
显示全部楼层
本帖最后由 Banker 于 2025-10-31 11:17 编辑
' ]6 O9 m7 \# d: `4 _9 d4 |) a9 @) O4 M$ Q) l
可用Excel,逐手模拟过程(但 Excel 跑不了 100000 靴,会非常卡)。
: P8 P2 Q, f! A; i9 X/ FExcel 更适合 直观小样本测试,Python 才能跑大样本,Python 可以试试N万-1亿靴,10亿靴,有没有没必要?你高兴就好。0 M4 @: N7 m& Q" P; V: M
) k1 j8 b5 B, o. [2 W: ~3 t7 {在你电脑上运行 Python 模拟器 (版本3.0以上,若没有,在Python官网下载安装)
( z" z1 G7 A1 O, x* p P3 s g* \假设你已经安装了 Python 3.x(在命令行里输入 python --version 或 py --version 看看有没有)。
6 O% R$ e$ Q2 k先写一个最基础的 百家乐投注策略模拟器(自己定义的规则)。* c$ c2 q1 D9 c8 k( i( _. W! \, O
( }, x2 w5 d' D" h
步骤 1. 新建一个 Python 文件
) y9 `% Y+ e4 t$ y9 `打开记事本(或 VSCode、Notepad++ 都行,我用记事本)
% [" C/ l% B7 N" W" S把下面的代码复制进去。9 V" H& C9 I% x. K; T! J
保存成 baccarat_sim.py (注意后缀是 .py)。
0 ?" ^; U7 [7 ^% w1 Y, W5 _( |; G
# k2 F; s- o' k7 pimport random3 V+ C- f' I: T4 Q, O2 ~' j" e
import argparse
4 B. v2 f3 t* z1 D
+ W) a. }" e* S0 z# 初始化鞋子8 q6 ^+ v* Q2 z1 B( m; \
def init_shoe(decks=8):4 s. o0 _5 Q/ \ ~& u7 h
# 每副牌52张,8副共416张
& E# h/ c# N% W! A shoe = []
: X4 v, q( s& Z5 \- ?2 ] for _ in range(decks):
/ H4 l9 W7 k+ F: g% H shoe += ['P'] * 24 + ['B'] * 24 + ['T'] * 4 # 简化:庄24, 闲24, 和4
w |' E. \* V2 O random.shuffle(shoe) F8 Y8 X% f' g. O2 k. z# ^. e, u
return shoe
/ H9 w. _+ \& A8 H& h/ W* K L( D* H, F3 y9 q. G
# 发一手
! l& S, Z$ s* ^& I+ Sdef deal_hand(shoe):
) U }7 [) u2 n) h' M; T. Z* c2 I if len(shoe) < 6:
( w# W* [$ @. |. Y# u) } shoe[:] = init_shoe()
& ?! D& W+ Z5 I- b return shoe.pop()% r8 m/ X$ F' L' K8 L# O
/ p: \6 q0 ^, r# 模拟下注法 A, K3 d1 w; {+ ~) E- @% |: [
def simulate_strategy_A(num_shoes=1000, commission_on=True):0 a c4 u( X% P
profit = 0
7 g: m" i) J6 N6 a commission_paid = 0& X) T2 {6 ], Y! Q6 ]! f
shoe = init_shoe() z+ U) P4 N. H. u0 X: ]/ \1 i
6 u; s( D6 i+ K/ s, f: S # 策略参数2 ~1 t* `, }2 p
sequence = [1, 2, 3, 5, 8, 13, 21] # 示例进级
, }! p& [4 a9 {5 p stage = 00 |# }' D; r( r4 L
target_side = "B" # 起手投注庄' V. f2 {* z, J J
4 A3 B! z/ t: A* b5 j while num_shoes > 0:
0 x) b# S& H! l$ A' z* ~$ v( h result = deal_hand(shoe)$ P# V: O5 e6 [* Q0 P3 i
4 h% l N- O% c& ]9 g! D/ l if result == 'T': ' t: x: O- N+ z, v# P" D. j8 w
# 遇到和,不输不赢,重投
) G0 f* S4 h$ a" \4 i continue0 U5 }$ Z" P5 P9 N1 q
9 h5 \, q' c' i+ Y q bet = sequence[stage]0 s6 c/ p" _7 j$ i/ h& G
) B% ?: [5 I, u) z( c if result == target_side:
' c7 O/ O( T4 k$ S' X$ ?! w6 c # 赢3 }1 E( j2 e6 ^* s
win_amount = bet
( A) R2 t* `$ j( K4 N if target_side == "B" and commission_on:
8 C7 ~9 x( p2 c1 u- D/ y, Q win_amount *= 0.95 # 庄赢扣5%抽水/ y# U# L$ x7 \/ y: \& ^3 z
commission_paid += bet * 0.05
* S m' \1 I# w7 w) `9 | profit += win_amount
) q) D4 ~( D" p stage = 0 # reset
& d8 ?& m& o) x0 b target_side = "B" if target_side == "B" else "B" # 固定庄(A策略固定)
+ k1 t+ c$ z) l else:5 V2 x ^3 A+ b- _% T: n% D
# 输3 |: {0 o H3 k. _ @5 {$ A
profit -= bet
* h" u+ G3 b- e) _8 J/ t+ K stage += 1
" |2 X1 {- ] \* T) F if stage >= len(sequence):
% R" v& B" [: W7 U7 W9 F stage = 0 # 断缆reset( d1 w' A% N4 [) b
num_shoes -= 13 C' Q W0 e& _1 N
7 y" D2 b. ], R return profit, commission_paid8 n. ~4 r7 T% j& C7 Z5 I, E& [
7 m3 f+ r. x1 \# 设置命令行解析" G/ c2 h$ f$ ` s+ F
def main():
, |' L e9 @4 `8 i9 B3 k; y parser = argparse.ArgumentParser(description="Simulate Baccarat strategy with commission on/off.")* W4 \/ ]' U: c+ i/ F( Z; K
parser.add_argument('--commission', choices=['on', 'off'], default='on', help="Enable or disable commission on banker wins.")/ U; a$ A; S% V0 i2 y% A
parser.add_argument('--shoes', type=int, default=1000, help="Number of shoes to simulate."): W# o* e! e& u3 ^ _/ p, h- Z
, |; D& n: R H! S% @, A: v/ @ args = parser.parse_args()# H6 A2 `4 G0 _. }- b/ \' b9 `
4 P5 B1 t7 \. d5 k# I) D0 Z # 抽水开关:开启或关闭
9 B0 p$ u/ m( N commission_on = args.commission == 'on'
* {: C2 Q' n/ a1 G+ H
( \: d* T2 Z6 s2 y6 ~9 e' T* O result, commission = simulate_strategy_A(num_shoes=args.shoes, commission_on=commission_on)* F6 y4 ~8 G' K
print(f"最终盈利: {result:.2f}")0 R2 @$ M T6 _+ X7 ]% D( E/ ^+ ?
print(f"累计抽水: {commission:.2f}")
: ~1 c. e. q# \* p, k
5 R7 e ~& e; V* z2 f6 j2 zif __name__ == "__main__":, p9 r* c1 A. \
main()
+ Y N3 I9 _, |- o8 o: k( L) ^7 S0 V0 G2 F5 R9 a7 Y$ E: \/ M. E
& r/ t& Y4 P5 J
步骤 2. 运行' k- o9 t; T# h: `3 s" r
5 e# A1 e0 b5 C2 {! x. d在命令行里进入文件所在的文件夹,例如:
" Q4 `: M& S5 k6 f- e( _2 d; _5 V: Scd C:\Users\你的名字\Desktop
7 A/ g7 t+ P6 |5 k3 _python baccarat_sim.py4 a2 t |7 c# Q4 C' X7 b: N' v
y! I3 i9 T3 a; J
输出会显示:- @7 R9 k- p: ?; B B* I2 B7 ~
- y& j( a3 S8 K# |- X0 Y2 Q* x5 M累计盈亏: xxx
) I( @1 I2 [0 |' T累计抽水: yyy0 ]1 l" f; U0 e! a. v# l0 L( |
-------------------------------------; o- U% Q2 Z, { p) t
实例:试跑3次, , `/ c! p+ J* X4 i
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py ' j1 J4 `& q( e7 Z$ a
最终盈利: -5360.35 . v1 ^9 ]4 h5 I" `
累计抽水: 5176.35
9 R, \+ G; f* lC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py " K; Y0 [/ F. y; V
最终盈利: -5661.65 1 [8 l1 f+ G6 m1 ]% k e% c* X
累计抽水: 5174.65 + E* F$ z% v" H |3 s
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
( P- }* M: l: j* H/ O8 p- U% {最终盈利: -4244.50
& U8 w9 L7 Y3 W" l; M累计抽水: 5176.50
4 B, K! q1 t" g# J
' H( ^- q; n0 P% E0 T0 b说明你的 Python 已经能正常跑模拟了。结果也很有参考性:
: S1 g- A, r3 N# R! x$ |0 f- V/ r) G- P0 l: N; [4 ~
累计抽水固定在 ~5175 左右 → 这和你设置的「抽水开关 ON」一致,因为你每手下注金额相同(例如 8 单位),程序是按 Banker 抽 5% 计算的,所以长期下来,抽水会稳定在一个范围。8 \/ Q% [* }( s2 B: y: P7 o5 R+ C5 ^
2 P' ~) s- L+ h$ W+ R) d
最终盈利为负数(-5360、-5661、-4244)→ 这说明在 100,000 局的模拟中,哪怕加上和局不计,下注方向固定,数学期望依然是亏损。+ D+ C& J6 Y# c1 B( i% e, V
这条缆不能直接用,用了会输。必须改缆法,或改缆法并且改下注规则。5 J5 K! G' ?0 o; D, c+ k* q
人们喜欢举例盈利,有吸引或牛逼的效果。。。用亏损的例子,可以真实告诉你,道阻且长不容易。 M4 j+ p% Z; r9 ^ D! d; |, G
但是别沮丧,办法总比困难多。只是,你自己悟的,是最好的。
2 \# p! Y, ^/ f* Q1 n
* }; \8 c7 d5 Q% @! p! Q% @4 y. i X启发,,,可以变更缆法,改变庄闲比例,指定胜负路。。。。(待续) |
|