|
|
楼主 |
发表于 2025-10-31 11:15
|
显示全部楼层
本帖最后由 Banker 于 2025-10-31 11:17 编辑
) q1 L! n1 B- e
! [. y- ?) b6 z/ n* M* A$ ^可用Excel,逐手模拟过程(但 Excel 跑不了 100000 靴,会非常卡)。 o' \5 \- Y, Z; i9 F( H
Excel 更适合 直观小样本测试,Python 才能跑大样本,Python 可以试试N万-1亿靴,10亿靴,有没有没必要?你高兴就好。# F0 ^% w# ^9 n/ O& c
5 @* S: }7 |$ Z( Y0 E
在你电脑上运行 Python 模拟器 (版本3.0以上,若没有,在Python官网下载安装)- O: [! M3 L9 f3 y8 ?1 \
假设你已经安装了 Python 3.x(在命令行里输入 python --version 或 py --version 看看有没有)。
* k$ B4 Z; @% X* L先写一个最基础的 百家乐投注策略模拟器(自己定义的规则)。; C% Q) a( S* c' ^( {3 D
0 k* P3 X, {+ a* ?. F. o
步骤 1. 新建一个 Python 文件
* v a3 l; b( z/ x打开记事本(或 VSCode、Notepad++ 都行,我用记事本)! D! Y% y+ o0 E+ [
把下面的代码复制进去。
; O6 x+ t( v" y/ F R保存成 baccarat_sim.py (注意后缀是 .py)。) o' c7 U# f. q. h
+ R) C. L0 k8 ?import random, }; p; @- N0 o2 T3 L
import argparse
2 _: n% E0 ]. u" \* B5 D7 u* A* e1 g" e. j
# 初始化鞋子: v: a! c8 @' f: e2 n6 U
def init_shoe(decks=8):2 T* W7 X) V% ]
# 每副牌52张,8副共416张
: i4 a E$ V l" Z) }1 H shoe = []
! h; Q% \+ H4 c$ e! | for _ in range(decks):- f. \: z F, t' \4 G/ ~
shoe += ['P'] * 24 + ['B'] * 24 + ['T'] * 4 # 简化:庄24, 闲24, 和4 M( H5 L. m: I& [0 j# y3 F
random.shuffle(shoe)
* T- H2 J6 c( a6 w; m2 ^ return shoe: v5 o; w) q/ F0 E" I( e6 I! X
* u: B" W: C9 ]4 N) y7 [' M# 发一手7 E5 h, X) }4 G( t m! { P
def deal_hand(shoe):
8 l6 ~$ H4 }6 P% c# }; b- } if len(shoe) < 6:6 C. P! s- j+ Q+ v1 Q
shoe[:] = init_shoe()
) `; w: j! o$ D return shoe.pop()
2 U. x+ J9 `7 |0 |3 K! W; t2 y8 s" h$ M& ~5 O- a' T
# 模拟下注法 A, S) i% m6 G+ r# |. `7 ~+ S$ q
def simulate_strategy_A(num_shoes=1000, commission_on=True):
3 F) M9 I( v+ Q" o, P* ? profit = 08 ]7 ]9 ?0 u* S$ I6 t% [
commission_paid = 08 l# J9 B. t8 m" s3 R7 k5 X& R7 r* R
shoe = init_shoe(), K- U: ?% ?' n
) x. I% L9 h# b" o4 z4 R i # 策略参数 C) W# ?" _! F% v: f4 H8 p
sequence = [1, 2, 3, 5, 8, 13, 21] # 示例进级
, i' }8 W# j4 O stage = 0 x6 t6 w5 @; W: j5 Q/ [
target_side = "B" # 起手投注庄
5 _) |% S5 E" V" l$ ~( z! G) I6 l. ]$ A% o
while num_shoes > 0:
+ _5 a7 j$ C4 i) u8 U0 h, S) t+ h result = deal_hand(shoe)/ B) _7 s, w( H. k! L) @2 l) v
3 C; v2 ~9 \6 P) Y3 [" g; {! X8 F if result == 'T':
, T9 z( X! Y! U0 D' Q # 遇到和,不输不赢,重投) V D$ `5 w9 g9 E! W8 T
continue
3 G: X$ y. W0 B* X- \. L
1 h1 b' J& S, e$ ` bet = sequence[stage]
1 C+ D# s9 y5 [, B9 c' z- Y% n
- ?% j' Y$ f6 A- M if result == target_side:/ W3 p$ d! a" v" _' j0 o* u5 z8 V
# 赢' x4 D- u! g' z! J
win_amount = bet
; Y U& X0 r$ P$ v" n if target_side == "B" and commission_on:
/ S* s+ s6 E# D8 @1 g: k win_amount *= 0.95 # 庄赢扣5%抽水; B. g1 ~ S. W8 X
commission_paid += bet * 0.05
& f- t- T% X8 W profit += win_amount+ G; @ R/ u" q2 p9 a
stage = 0 # reset
6 s; s' h# @; b target_side = "B" if target_side == "B" else "B" # 固定庄(A策略固定)
( I2 o, k7 W7 l+ j else:
( y/ W, K7 N# T) u" [ g # 输0 d/ x: `* r( D; j$ y% p# d
profit -= bet
2 V. Y5 {" t, |5 J+ _ stage += 12 m/ j- M, x2 W
if stage >= len(sequence):5 m7 g. `3 Z; H C& V0 i1 N$ {% o
stage = 0 # 断缆reset
" @ b0 i: z5 K, h$ _9 R num_shoes -= 11 o# N: j: o9 |, A
: k: ]0 {' \. n& m
return profit, commission_paid
g5 B% @: }; y: v8 O
; T0 v( L! I. n, u' n, x# 设置命令行解析
8 h' w2 R8 T1 A5 w7 J& n: kdef main():
, O# i) I/ e6 H; O parser = argparse.ArgumentParser(description="Simulate Baccarat strategy with commission on/off.")
. i9 a) v* ~ q# H# ? parser.add_argument('--commission', choices=['on', 'off'], default='on', help="Enable or disable commission on banker wins.")& h) U7 @. w/ h5 e. v B: X
parser.add_argument('--shoes', type=int, default=1000, help="Number of shoes to simulate.")
0 L6 V' R9 Z; p3 K / i2 R) g2 i% `# j( U
args = parser.parse_args()3 V! O4 k1 K. _) }/ u
( S: s. s* D6 z7 N/ a* c- H # 抽水开关:开启或关闭
+ w; `/ E) I' x commission_on = args.commission == 'on'
! U; S9 L+ V! B) m; J: V% o
% _# @0 l3 d* L result, commission = simulate_strategy_A(num_shoes=args.shoes, commission_on=commission_on)
: |$ k$ W3 p8 y print(f"最终盈利: {result:.2f}")
$ x" d( X/ |) _0 X0 m print(f"累计抽水: {commission:.2f}")8 @3 y" v; F& r. G
. a- o- F8 P( P% U7 @2 X8 p
if __name__ == "__main__":+ d; C8 ^, W- U: n
main()
4 j* D6 k* h- ?" [- C2 {& u
, q4 G( h- z/ H2 M1 c
$ {9 S; n2 Q9 m步骤 2. 运行6 l; O& L7 j5 m# b$ Q& }
. ]$ @2 r+ z; G5 D O/ P' b) s在命令行里进入文件所在的文件夹,例如:
" Z7 n. a3 F+ G) a& [ a4 k( Zcd C:\Users\你的名字\Desktop$ ]$ M9 Q" W- R+ q |/ e
python baccarat_sim.py
% e" D: R z; y9 E
: B1 {+ ~% J- r- _4 F' [( r输出会显示:
, E$ P- B0 I' m7 h* W9 G/ E% \ x+ Q
累计盈亏: xxx
6 a( V! o! u5 k, g0 G) q4 m累计抽水: yyy
3 T. \% E, b- g. y2 [" f+ I9 X-------------------------------------& c& E7 ^8 j& a( n
实例:试跑3次, : b B9 h5 ` G% ~
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
0 d) v, U3 N0 |- {' J2 l C最终盈利: -5360.35 9 D- Y; t. g( v- R$ V
累计抽水: 5176.35
( z2 s! Z+ {3 W" }5 LC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py 8 w+ f0 t# b" W0 X" h2 J" s
最终盈利: -5661.65
4 D a: ?" O5 M累计抽水: 5174.65 ' u- _! k" r' j2 K6 s
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
# y" T2 Z; M/ v$ Z5 J2 H最终盈利: -4244.50
7 A. s0 G. Z+ O- L累计抽水: 5176.50/ l; D( E- D& I: E) l7 U1 @
/ C! |/ ^! L, [6 A2 o- P
说明你的 Python 已经能正常跑模拟了。结果也很有参考性:
6 G5 C' N: B( P, T( v4 E, c7 c5 R) l1 q4 {( C9 N1 W
累计抽水固定在 ~5175 左右 → 这和你设置的「抽水开关 ON」一致,因为你每手下注金额相同(例如 8 单位),程序是按 Banker 抽 5% 计算的,所以长期下来,抽水会稳定在一个范围。
& k. ?* x% e. {. m/ W$ E. N5 u: [4 V" V* {. t$ Y: y6 H
最终盈利为负数(-5360、-5661、-4244)→ 这说明在 100,000 局的模拟中,哪怕加上和局不计,下注方向固定,数学期望依然是亏损。7 o% T0 L1 w0 W
这条缆不能直接用,用了会输。必须改缆法,或改缆法并且改下注规则。
7 ?7 U6 W1 N# L& S5 v% \人们喜欢举例盈利,有吸引或牛逼的效果。。。用亏损的例子,可以真实告诉你,道阻且长不容易。
1 I# u: \+ I, x$ f, G3 r% g但是别沮丧,办法总比困难多。只是,你自己悟的,是最好的。
. I8 s6 `" ~' }# ?
9 z; j6 \3 ~: r4 p启发,,,可以变更缆法,改变庄闲比例,指定胜负路。。。。(待续) |
|