|
|
楼主 |
发表于 2025-10-31 11:15
|
显示全部楼层
本帖最后由 Banker 于 2025-10-31 11:17 编辑 ; b, ^. I, S/ S4 Z% [) g
1 A" J+ Z4 b9 ~- S1 D% K4 n: S% }
可用Excel,逐手模拟过程(但 Excel 跑不了 100000 靴,会非常卡)。% e X6 \" G3 |0 S3 f- v
Excel 更适合 直观小样本测试,Python 才能跑大样本,Python 可以试试N万-1亿靴,10亿靴,有没有没必要?你高兴就好。! ]* _: L8 J; H- ?/ P4 p
8 b2 Y, O8 E5 J# [$ [/ b0 ?% S* i
在你电脑上运行 Python 模拟器 (版本3.0以上,若没有,在Python官网下载安装)( P/ f3 s; F) D! `% _* I4 c1 p6 E
假设你已经安装了 Python 3.x(在命令行里输入 python --version 或 py --version 看看有没有)。1 S( |7 B. W; J
先写一个最基础的 百家乐投注策略模拟器(自己定义的规则)。
$ ]8 J& x1 }, i8 N
5 q, w7 N1 {! X0 T/ b: g% N步骤 1. 新建一个 Python 文件: K$ u' ]" B4 O' x0 s. D
打开记事本(或 VSCode、Notepad++ 都行,我用记事本)/ {2 N( s, [5 i# R: Z
把下面的代码复制进去。7 B+ f, w, }3 p( `7 y, k) Y1 N
保存成 baccarat_sim.py (注意后缀是 .py)。
! @; Z% i1 ]4 S7 ~" R$ w% C. l- z; d8 s2 a2 ?
import random
( A7 Y+ }+ L; c% Mimport argparse3 }" V( o" d! e" I
. G* G6 U7 T5 B2 U) n6 \, H6 B# 初始化鞋子
! n |" o0 }" tdef init_shoe(decks=8):) R5 F9 a4 r' |! O: l, {
# 每副牌52张,8副共416张/ \. F4 x; Y! c, S# I$ R3 v
shoe = []; A$ E5 Z' o! U M& @4 [+ L5 w
for _ in range(decks):
- a) s, i) y7 e! J shoe += ['P'] * 24 + ['B'] * 24 + ['T'] * 4 # 简化:庄24, 闲24, 和4
, _0 E# h, h _5 P! J. |) f random.shuffle(shoe) v6 ^; l1 K6 Y, V5 O# u
return shoe H6 V# z& l4 ~9 h% m* ]" `0 Y
. l# z& j7 X. [; o* O
# 发一手
- J1 ]9 _+ p. i ~. B( Jdef deal_hand(shoe):
& s! I4 ` ^+ E3 Q$ L& B) G$ D if len(shoe) < 6:2 F9 ? U3 a. T" w
shoe[:] = init_shoe()3 k( K* H4 ~) I% s" a
return shoe.pop()4 q8 h, e6 o; I7 I/ I+ e/ P
4 M- p+ s* B2 M e' J- n# 模拟下注法 A
; C: f; C6 U s2 N" d% bdef simulate_strategy_A(num_shoes=1000, commission_on=True):7 w" C# i4 A, U+ M: V
profit = 0( g- ~# M2 R% m% r
commission_paid = 0
- F0 ~ x- a! m' {, h shoe = init_shoe()6 p# ~( v# b/ H$ t
( A- d% W. I7 ~; v # 策略参数" Z$ d* i3 J0 a. P+ Z o
sequence = [1, 2, 3, 5, 8, 13, 21] # 示例进级
2 X' H9 n3 ?& P4 D stage = 0* a; d) w, ?- O4 ]+ g$ O/ O/ a
target_side = "B" # 起手投注庄
- J+ H; U0 T- e9 F
; T. z# U, `1 Q5 ~( `& L! m while num_shoes > 0:
* s/ G* n4 Q) L- \$ z! O% p0 l7 l result = deal_hand(shoe)
1 g- H0 k6 A: g- [6 f, y' c; b# _$ G) D v0 c/ b
if result == 'T': + a& C( b( W- n8 j( P" Y
# 遇到和,不输不赢,重投
2 k- U# A& O$ h( k7 t continue
2 l) x d1 \# d0 E- v) q: Y: t* y& k5 @
bet = sequence[stage]& b0 F1 ?2 M8 A9 F& I( i3 G g f
& j. ]( J2 }+ F* x( K
if result == target_side:( c/ ~# w2 | _8 W- U' k
# 赢$ Z2 y$ ~' k# @( A1 Q
win_amount = bet, U. N: G. a1 A% j8 |
if target_side == "B" and commission_on:! U4 P% ?" _4 ~# t
win_amount *= 0.95 # 庄赢扣5%抽水
6 P- Y" t9 ?$ d: B: I" s commission_paid += bet * 0.053 S' G: ?- }* t2 A' H5 T( w! T
profit += win_amount
% h! r/ K+ F4 Z$ Q2 A3 _* i! U q2 c. c stage = 0 # reset* @3 R" E% v. u% a5 Y" p* T
target_side = "B" if target_side == "B" else "B" # 固定庄(A策略固定)8 p+ T3 k3 G0 N
else:* X: R$ G0 u9 S; M/ ?6 T
# 输8 T" v6 A! @' @
profit -= bet6 J9 _' m( [( _8 q, Y( u8 w
stage += 1
4 g/ C- \3 e! I( E5 ~ if stage >= len(sequence):
7 c. g5 W# r8 k m stage = 0 # 断缆reset
: c$ X, p+ t) y- ]6 v num_shoes -= 1
1 X7 P6 } h9 j+ \9 r+ _0 Y- O$ W/ l( t# V3 ~ U
return profit, commission_paid! U- j. |3 i, T* r0 O* }; [
/ h* t L6 q4 y8 F) M# M N7 n" W# 设置命令行解析
/ _0 d2 K0 g- H0 u, G3 Gdef main():
% r# t$ u* ]: w2 f parser = argparse.ArgumentParser(description="Simulate Baccarat strategy with commission on/off.")
2 t+ `+ I5 T1 z parser.add_argument('--commission', choices=['on', 'off'], default='on', help="Enable or disable commission on banker wins.")2 s y! I. J8 R D1 Q& B
parser.add_argument('--shoes', type=int, default=1000, help="Number of shoes to simulate.")
K6 Q' x$ d/ g b / |* H9 Q5 N; _* `8 ]
args = parser.parse_args()4 t3 J$ F5 I/ j5 C2 b
+ c: X; p- R# t9 M* F. D
# 抽水开关:开启或关闭
- p2 p0 q4 T5 j3 Q u, a# I% z. ^: W commission_on = args.commission == 'on'
1 _9 m" U( m" q" S3 V& d # q* T3 ], M( L
result, commission = simulate_strategy_A(num_shoes=args.shoes, commission_on=commission_on)
1 w- l3 I1 M# V( z. K1 j print(f"最终盈利: {result:.2f}") F& |/ X: f+ t
print(f"累计抽水: {commission:.2f}")
3 O& D D& d% I4 Q- F- x& A
* _4 H5 Y6 R: Qif __name__ == "__main__":% I+ k- r$ S6 ?
main()& {/ X+ k% k0 ?: T. x4 ?
5 o+ a. H- \( d- ]+ ?
- G& s8 \, e. Z9 m# @步骤 2. 运行
4 `) q7 O! ?0 Y$ e* P- a
$ o1 I1 ~3 R; F在命令行里进入文件所在的文件夹,例如:
4 G N9 p% n% O5 p7 e# R: Jcd C:\Users\你的名字\Desktop5 v# k0 c2 ~; D3 b: D0 _9 d
python baccarat_sim.py
9 L7 y) P" F, o
2 x+ M# {0 a4 q/ q% x2 @输出会显示:
+ H( X1 N; ?& v: c- I
. K' I) j, k' `; F0 t累计盈亏: xxx
& T; U- _* `' c' B1 a累计抽水: yyy( X a U8 z+ Z
-------------------------------------2 U+ J2 Q5 }( b: G* Y
实例:试跑3次, n) ~9 \9 j% m- I" {9 K9 z
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
) ?5 \) r5 `" V; j8 k* f5 d最终盈利: -5360.35 / z8 R1 X# M& h! G; t5 }' Y
累计抽水: 5176.35 1 v8 T6 M8 H& I& N/ K
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
+ w* O: W4 u) u3 S [最终盈利: -5661.65 - s. |) w2 Z# q1 [9 m" S
累计抽水: 5174.65 9 B& R( F: V0 k2 }9 g/ I$ u
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
' u- W! i! w+ R最终盈利: -4244.50 2 }' w9 Z; g' {. b/ t& \& c
累计抽水: 5176.50
6 K: Y$ [- |$ | N" e& k3 _# F ?+ l% ^4 |+ L, Z! N
说明你的 Python 已经能正常跑模拟了。结果也很有参考性:
5 T" _4 g* x% ~
5 i4 ~$ Q0 N4 l累计抽水固定在 ~5175 左右 → 这和你设置的「抽水开关 ON」一致,因为你每手下注金额相同(例如 8 单位),程序是按 Banker 抽 5% 计算的,所以长期下来,抽水会稳定在一个范围。0 v4 d3 E& v8 b, ]5 s
2 B5 K2 T. Y4 M9 P最终盈利为负数(-5360、-5661、-4244)→ 这说明在 100,000 局的模拟中,哪怕加上和局不计,下注方向固定,数学期望依然是亏损。7 }" O: R5 U9 Y7 _% [. N
这条缆不能直接用,用了会输。必须改缆法,或改缆法并且改下注规则。* c0 _) }. J, F9 n
人们喜欢举例盈利,有吸引或牛逼的效果。。。用亏损的例子,可以真实告诉你,道阻且长不容易。1 u4 _3 p9 {2 l) A
但是别沮丧,办法总比困难多。只是,你自己悟的,是最好的。6 s$ r% _' C; B5 t7 S
- g# l: L: S* S p$ x( Y6 r启发,,,可以变更缆法,改变庄闲比例,指定胜负路。。。。(待续) |
|