|
|
楼主 |
发表于 2025-10-31 11:15
|
显示全部楼层
本帖最后由 Banker 于 2025-10-31 11:17 编辑
$ s) C& ]' k! ]6 N# a" ?5 j3 y; w' ]7 C7 u8 O4 N" S
可用Excel,逐手模拟过程(但 Excel 跑不了 100000 靴,会非常卡)。
0 P6 c& V8 d* [Excel 更适合 直观小样本测试,Python 才能跑大样本,Python 可以试试N万-1亿靴,10亿靴,有没有没必要?你高兴就好。
& v& ^. v- ]1 S. _6 h# k/ S( q6 Q, F% H: G' |
在你电脑上运行 Python 模拟器 (版本3.0以上,若没有,在Python官网下载安装)
5 a' Z5 T6 L4 J: b- ~$ R假设你已经安装了 Python 3.x(在命令行里输入 python --version 或 py --version 看看有没有)。
- A. `, A# G$ g# Z& c# E a# c先写一个最基础的 百家乐投注策略模拟器(自己定义的规则)。
: y- u, F E0 H" ^6 m! K/ Z% u8 W: T( c8 H; P
步骤 1. 新建一个 Python 文件
, E( b7 P. E2 ~打开记事本(或 VSCode、Notepad++ 都行,我用记事本)
+ |4 ~8 g# r7 R) d! V3 q把下面的代码复制进去。
( e. U' F2 D' k保存成 baccarat_sim.py (注意后缀是 .py)。
" ^" z. `5 B6 A" U' K; L( X4 [. J+ ]) s( v. U8 ^
import random
9 C' ^6 c- z+ L7 g" wimport argparse
; h, D" E5 I% R8 ~6 i! K0 J, ~
0 p1 L0 S5 \3 i% t- g# a' @# 初始化鞋子
N/ Z, O1 G$ c' `9 _& |% B. c' ydef init_shoe(decks=8):" p- s* z4 k! ^ t
# 每副牌52张,8副共416张( K' A. \2 Q1 k. A+ Y$ v N2 p$ A
shoe = []* O: r8 Z' C( f: v
for _ in range(decks):/ n) }% b- |; G4 `9 [
shoe += ['P'] * 24 + ['B'] * 24 + ['T'] * 4 # 简化:庄24, 闲24, 和48 U R+ C. x9 O
random.shuffle(shoe) A( _$ [6 ?) r- P1 w
return shoe
; l: p6 O2 V- w( Z0 M1 Z* ?. j5 \+ n& u% g6 v$ \
# 发一手4 B8 F% Z f# @% p9 E
def deal_hand(shoe):/ m. U- I1 V; \0 ?" t% q7 F" B! j! z
if len(shoe) < 6:
. A4 b h; f- Q" U shoe[:] = init_shoe()
) j1 j9 h4 x" L return shoe.pop()
! r# G- P8 q' v8 R4 x; T2 j
2 g% q0 i) a$ t1 v4 |$ w# 模拟下注法 A
0 a" ]) t% |5 p* jdef simulate_strategy_A(num_shoes=1000, commission_on=True):! C5 ?1 h2 m$ I- b7 D; x
profit = 0
$ E" p0 K- M; a8 d) m commission_paid = 0
) P. Y' t: C$ P3 Q' C shoe = init_shoe()) J; Y' ]5 H5 U+ p M+ \ B3 @
( A$ ]# A' {; B, x # 策略参数% l; \; K: m* b/ o) p5 z
sequence = [1, 2, 3, 5, 8, 13, 21] # 示例进级
- m q) ]8 _0 W. b g stage = 0
, B" W5 y6 F. A" S0 j target_side = "B" # 起手投注庄
; F- j. M2 F/ g# h
1 O% j- }8 B* m# k while num_shoes > 0:' v+ f& ]: r" ?3 M- J- T
result = deal_hand(shoe)) F) m% t) C6 x) I3 p* S& {
) u# f' q3 q" _" d if result == 'T':
" I5 y" R3 G$ I/ q7 j7 j # 遇到和,不输不赢,重投4 Q; e0 K3 |0 ?! X, [
continue% o0 s+ A+ h0 r/ m x
* s/ q9 Z! Z7 i) `
bet = sequence[stage]
) z- X5 s" V7 u$ u K # z$ v& R/ \+ S! t
if result == target_side:/ [. O+ r( _$ W* S$ ]/ \
# 赢, D, s8 Z; P6 Z4 D
win_amount = bet" f5 y! D4 {& d
if target_side == "B" and commission_on:
+ f5 I- D# _7 L" W2 s% N win_amount *= 0.95 # 庄赢扣5%抽水
k$ A/ N+ c2 q& v h0 P commission_paid += bet * 0.05
/ N- c, |; ]0 ? I7 S profit += win_amount
6 P$ a c" ~& D+ E stage = 0 # reset
7 b' I: a w4 c- {! ? target_side = "B" if target_side == "B" else "B" # 固定庄(A策略固定)( Q8 L& [% ]5 w1 V& f7 ^
else:; R; G2 x( x+ W' t: ?
# 输9 S3 Y4 C: H7 J* J
profit -= bet7 {5 X4 R, j2 Z$ Z$ {; m# S. J
stage += 1
8 c: G; I2 i3 { e# s' b if stage >= len(sequence):
# z% J9 r3 z) L+ x1 r stage = 0 # 断缆reset
! x. f$ P4 {8 W8 I num_shoes -= 1! r9 H$ J o5 J+ G3 c" {
* X' {; ?, d) w; ^, u7 e1 e7 D: L return profit, commission_paid& r) a! H$ b1 F9 ~3 D3 z
" `) R6 `& c* D" [2 q
# 设置命令行解析
' C0 G# A: m8 ?4 x7 ldef main():8 y8 Y! e& N8 T. A! s
parser = argparse.ArgumentParser(description="Simulate Baccarat strategy with commission on/off.")
0 j& l! G+ _/ _ ?3 {5 |, Q parser.add_argument('--commission', choices=['on', 'off'], default='on', help="Enable or disable commission on banker wins.")- l) N U% s0 Y4 R( a
parser.add_argument('--shoes', type=int, default=1000, help="Number of shoes to simulate.")6 c: e+ n9 o5 N
& G( j9 T7 T" r' x3 B+ R: `3 ] args = parser.parse_args()
8 r& _- H3 r6 c* m. Y# N
: A2 j/ }4 k. p- p+ @4 t+ v # 抽水开关:开启或关闭
/ q+ W. ~6 w6 Z# s5 {7 ^+ C commission_on = args.commission == 'on'
. W1 b" u5 h- Q5 L- f
% F( F+ f' h3 j+ V! ^9 C6 { result, commission = simulate_strategy_A(num_shoes=args.shoes, commission_on=commission_on)
. _: Y. Y5 o2 y3 M* B$ c3 Q print(f"最终盈利: {result:.2f}")
) ^0 Y, B5 b+ n( v print(f"累计抽水: {commission:.2f}")
% j- ]. x1 n7 x0 E C0 |
& ?$ n( _5 f4 S# e8 ]if __name__ == "__main__":+ w# v+ W! a) [9 y, f" j7 e
main()0 q- ~: }7 Z& m% q9 a- ]5 s: Q% w
. s4 ?* l% x5 [$ q, j! M4 O% U( _# C
步骤 2. 运行' M6 q. Z0 Z% T, H& n- v5 T: Q3 T
' p; c2 ~5 l/ R6 I7 s
在命令行里进入文件所在的文件夹,例如:1 F5 u, y% R% r, o% W0 |
cd C:\Users\你的名字\Desktop
1 u- a4 V% `' m, ^! G0 epython baccarat_sim.py6 j8 g* k3 m. _/ o/ ]* v( ~- I. q& @
- h. @" u0 P, A& p
输出会显示:' c( H: G& y7 i( O) E# A
2 n; B3 x4 e7 `0 P2 C累计盈亏: xxx# Y! W( e) f, s. s9 ^) c' A: e: L
累计抽水: yyy
2 v# M; Q5 }1 E2 }. I! w$ i- n-------------------------------------
$ ~7 \( K$ c& s, n, b- T2 o% b& m# l. M实例:试跑3次,
9 G, o# u% d0 a- kC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py ; T/ d. l1 d S- U3 k: X6 @
最终盈利: -5360.35
1 A+ `/ \7 K6 f- ~, h% H累计抽水: 5176.35
I0 M% `+ o7 i* Z/ c$ R3 HC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
% k7 Z8 ~' b/ Z9 a' X8 I- N最终盈利: -5661.65
3 K9 k; r4 {, p+ D" [累计抽水: 5174.65
/ U& G2 x1 F3 WC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py 6 {; R' k7 L; J- m9 Q5 B8 I. D- z
最终盈利: -4244.50 8 ^% S/ a& V( I4 I# j1 k3 \0 e" O
累计抽水: 5176.50: `0 _* ^9 D+ ^) A' H: v
, s! U- H# u" p& _3 {, X% |
说明你的 Python 已经能正常跑模拟了。结果也很有参考性:
. |3 Y9 Y7 d; b( B
6 J0 h F3 Y4 i累计抽水固定在 ~5175 左右 → 这和你设置的「抽水开关 ON」一致,因为你每手下注金额相同(例如 8 单位),程序是按 Banker 抽 5% 计算的,所以长期下来,抽水会稳定在一个范围。
" n: H# S7 T7 H! p9 |: s
% C$ U0 S7 V" T1 r# o9 C* \最终盈利为负数(-5360、-5661、-4244)→ 这说明在 100,000 局的模拟中,哪怕加上和局不计,下注方向固定,数学期望依然是亏损。
. @5 [ G( e" P2 y( O5 q这条缆不能直接用,用了会输。必须改缆法,或改缆法并且改下注规则。0 {: z8 M& M/ w
人们喜欢举例盈利,有吸引或牛逼的效果。。。用亏损的例子,可以真实告诉你,道阻且长不容易。
2 B4 k) T$ {% b/ P但是别沮丧,办法总比困难多。只是,你自己悟的,是最好的。" m* u/ G: h$ ~: O% k) `
: V. M% Y& i3 [- _0 ?- Y启发,,,可以变更缆法,改变庄闲比例,指定胜负路。。。。(待续) |
|