|
|
楼主 |
发表于 2025-10-31 11:15
|
显示全部楼层
本帖最后由 Banker 于 2025-10-31 11:17 编辑 $ B5 _9 K& b h. X1 N3 V
) Y0 i/ O! c2 s* Z R- x可用Excel,逐手模拟过程(但 Excel 跑不了 100000 靴,会非常卡)。
5 Z9 E; j4 b0 i1 [ p8 D9 p. EExcel 更适合 直观小样本测试,Python 才能跑大样本,Python 可以试试N万-1亿靴,10亿靴,有没有没必要?你高兴就好。
@5 R* E# `7 i1 Y Y, @* B) p
+ L& @( c, w" V在你电脑上运行 Python 模拟器 (版本3.0以上,若没有,在Python官网下载安装)
4 R% i# \0 N1 a8 m假设你已经安装了 Python 3.x(在命令行里输入 python --version 或 py --version 看看有没有)。
2 I; K' X$ t! L7 R先写一个最基础的 百家乐投注策略模拟器(自己定义的规则)。. s1 l/ y5 d5 D6 y: |. Z1 N
- O0 D& K2 Y1 @4 r" J" x
步骤 1. 新建一个 Python 文件
; O# D. d7 n, f2 t" \7 A* A9 C打开记事本(或 VSCode、Notepad++ 都行,我用记事本)
. r. L( A9 _5 M: ~* @) f j/ e把下面的代码复制进去。
. _* ~! l8 ?! J2 W/ |+ L保存成 baccarat_sim.py (注意后缀是 .py)。
) V* T! K( n; Z4 y
" N! u. q, T; K. E- [import random% N9 P7 O3 A( I! l/ H. \/ ^9 z) b
import argparse
% q( F9 f8 ]; S6 g9 [3 ^' x
+ b' Q4 y& T+ x( ^" D# 初始化鞋子
$ R! I$ f: w5 C2 Gdef init_shoe(decks=8):
]; J* `1 m7 p& T$ i, T # 每副牌52张,8副共416张+ I5 n$ Z( _. y
shoe = []0 ~/ Y& {/ X" a* K2 H; M N
for _ in range(decks):
7 |5 {( {8 i6 o1 y: Z shoe += ['P'] * 24 + ['B'] * 24 + ['T'] * 4 # 简化:庄24, 闲24, 和4
' G/ }. `6 x9 K' m6 |+ I$ i' ~ random.shuffle(shoe)2 i: s U$ }- t6 U0 a( `6 N
return shoe {2 v, O7 l, G. `% @* ?# N
# \# E. }- T3 A! j7 V3 j# 发一手
: j0 W! M& W" M, A% G( h4 Gdef deal_hand(shoe):
+ d# [% Z! D( C2 @; T2 \7 d n" G" | if len(shoe) < 6:
1 t1 ]. j. e* ?' D# h shoe[:] = init_shoe()6 U8 W% A! l5 R0 v# j& R
return shoe.pop()
1 Z3 P6 G+ i' {$ s3 S Z# Y/ O2 d' n. J I# Q
# 模拟下注法 A# {1 T, P, V4 B# R
def simulate_strategy_A(num_shoes=1000, commission_on=True):1 R- i+ f$ s9 I
profit = 0
1 ?4 D! n" M( k- M, g; ~, s commission_paid = 0
' t( B& h+ H- D6 s3 \ shoe = init_shoe()
, I7 U* v% I- x$ W( r% d
) f4 J$ J, n3 |* R7 X t # 策略参数5 B5 t- E' b7 B6 O- g" }; ]
sequence = [1, 2, 3, 5, 8, 13, 21] # 示例进级
$ e# h. \0 P+ \) ^ stage = 0
7 Z0 e% V- q6 @" F target_side = "B" # 起手投注庄0 i! V+ K% J/ x" l& C9 E$ R9 g% |- t
* Q# h$ ?4 m9 m9 y while num_shoes > 0:
! o* v6 C l: ?1 W6 l5 z& M result = deal_hand(shoe)9 Q s- I( e0 @4 h
+ N; q" [" `2 R" {) {* i
if result == 'T':
7 J$ H2 D |& K# W ^3 K S4 O # 遇到和,不输不赢,重投6 ]8 P3 \$ m: F# G2 N0 G& D4 p8 ~
continue; ]6 C% J) A9 B2 a$ R; l. l) ?
4 C3 N" h" M) z6 I. f2 c" k, z
bet = sequence[stage]. ~" P3 S# f5 e) I6 o/ U( i
# }' [, U4 r& u3 u1 a3 u
if result == target_side:
: x& H; x- C" c+ P0 F# n! c Q # 赢7 ?, c% v+ }2 A* D# k
win_amount = bet6 Q9 t2 I4 e; m( F! W
if target_side == "B" and commission_on:* D1 Q0 ^- I$ l) p2 `
win_amount *= 0.95 # 庄赢扣5%抽水0 U. v& o5 X+ ~% b& g$ T2 O
commission_paid += bet * 0.05
9 q% ^: `% X5 U4 M* B/ E5 \. l; P profit += win_amount1 U, N8 w8 ]' ~" _1 r8 p
stage = 0 # reset* ^5 h) i( V! [$ E8 N) h
target_side = "B" if target_side == "B" else "B" # 固定庄(A策略固定)- |# K& R$ u( y- m Y! @
else:/ J& x q% r7 G8 \& Q4 _
# 输
4 F. P' s9 m9 C' r profit -= bet
8 M9 Q/ r- J B$ }( P stage += 1
) G3 O0 d9 I, j if stage >= len(sequence):
0 }: a8 G- T9 M% v3 \6 E/ I stage = 0 # 断缆reset! e. L3 g; U; T2 M
num_shoes -= 1
% _3 U1 S2 l# l5 q( e
5 e0 {' {9 ]9 q2 ? return profit, commission_paid3 I+ J# b, E3 r$ S( [; S% z
; m b+ k4 I) S* ]6 `# b" c) K# 设置命令行解析8 Z5 g, i3 d$ _/ ^' T( u1 }+ @
def main():4 t6 _) c: g# F6 k; ?0 @
parser = argparse.ArgumentParser(description="Simulate Baccarat strategy with commission on/off.")
* ~, r" Y4 w, f% M8 W parser.add_argument('--commission', choices=['on', 'off'], default='on', help="Enable or disable commission on banker wins.")9 x' h! m# X) R8 k* T( z6 }
parser.add_argument('--shoes', type=int, default=1000, help="Number of shoes to simulate.")
" d+ @, ~- V# ~( r& i$ N 3 | T( E7 [( y+ C# y: J& s! k+ @
args = parser.parse_args()
: c# p" [0 l5 A' m3 u 0 C2 c' J6 V! F# F& |) y) ^0 ~
# 抽水开关:开启或关闭
' Z6 ], s9 o6 p+ l% T% ` commission_on = args.commission == 'on'$ T w$ K9 |" T! H% V6 [
, Y, Q# H$ m, G) |1 m
result, commission = simulate_strategy_A(num_shoes=args.shoes, commission_on=commission_on)0 h$ s% U8 q+ U( `( ?
print(f"最终盈利: {result:.2f}"). p# w: R; ]0 o T
print(f"累计抽水: {commission:.2f}")
9 c+ J1 B3 s7 h$ j! d1 ^! {% x3 [( {9 t G' }% r! j
if __name__ == "__main__":; t; |( V# U q; R
main()
/ g& O# Y9 j+ E0 o7 F- ]
) s# f( V7 K* \1 F3 ?8 B1 \2 I! w" E, g3 z0 V0 w7 }+ p, h
步骤 2. 运行
: ^! C: @* p4 j' H1 k( K8 d9 D3 C9 F: N f! c
在命令行里进入文件所在的文件夹,例如:4 Y: D/ d4 \0 s
cd C:\Users\你的名字\Desktop9 t5 r* _( o3 a; z i
python baccarat_sim.py
; F- M. U c7 q) G
- ]: m) | K' r3 s9 ` Y输出会显示:
% N6 U/ I4 R/ F& ^9 p- _& o4 n
$ c4 o0 N: ?+ K' n累计盈亏: xxx; n+ P* c* y& B
累计抽水: yyy
2 N; p5 d; e6 u1 m7 U& Y-------------------------------------: e* u. e: |4 K- s) y4 s0 L# P1 P4 s
实例:试跑3次,
/ u$ \3 C% S, ]3 _1 EC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
% i! u$ y: _9 l* f最终盈利: -5360.35 4 G( r; l' B/ q' U* \& o# l3 Q \! Q
累计抽水: 5176.35 4 l6 ?/ c* S, ~4 ~: o; F) ~
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
0 ?/ U0 k' B# V最终盈利: -5661.65
5 e6 W( f) T& E% b$ C7 r累计抽水: 5174.65 / H m/ [* b8 B0 _! F
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
G; z6 y" C5 n9 u u0 [3 j最终盈利: -4244.50
5 a. \% h7 s2 ?) a累计抽水: 5176.50* J# P0 t$ n v
: g* U5 @1 P' [# p" M
说明你的 Python 已经能正常跑模拟了。结果也很有参考性:
" Y: g, J6 T3 @4 m' Z$ A- m: k# A2 {; S2 B
累计抽水固定在 ~5175 左右 → 这和你设置的「抽水开关 ON」一致,因为你每手下注金额相同(例如 8 单位),程序是按 Banker 抽 5% 计算的,所以长期下来,抽水会稳定在一个范围。
3 `' K9 N! ^0 D) e: U) S5 d' b- N: [4 j
最终盈利为负数(-5360、-5661、-4244)→ 这说明在 100,000 局的模拟中,哪怕加上和局不计,下注方向固定,数学期望依然是亏损。4 ~# a; ^! J% @5 _/ ]
这条缆不能直接用,用了会输。必须改缆法,或改缆法并且改下注规则。! }$ Y8 N2 v5 G
人们喜欢举例盈利,有吸引或牛逼的效果。。。用亏损的例子,可以真实告诉你,道阻且长不容易。6 U# u" u0 Q. i( z: u0 ^
但是别沮丧,办法总比困难多。只是,你自己悟的,是最好的。
- c) ` n6 f0 Z# ^ I i, x
7 `0 Q/ e" {5 Q$ g5 p, u启发,,,可以变更缆法,改变庄闲比例,指定胜负路。。。。(待续) |
|