|
|
楼主 |
发表于 2025-10-31 11:15
|
显示全部楼层
本帖最后由 Banker 于 2025-10-31 11:17 编辑 4 @$ f+ h& |4 y# V
9 {8 \/ N& \: D4 l) W
可用Excel,逐手模拟过程(但 Excel 跑不了 100000 靴,会非常卡)。5 _" E* D- q# ]. b/ X9 Y6 \
Excel 更适合 直观小样本测试,Python 才能跑大样本,Python 可以试试N万-1亿靴,10亿靴,有没有没必要?你高兴就好。
]5 c# @, | k4 G2 [% F4 p; g
) W2 Q- ]& [& j4 ]- |在你电脑上运行 Python 模拟器 (版本3.0以上,若没有,在Python官网下载安装)3 r( [9 Y7 D* c' n# e- f0 K" V# Q
假设你已经安装了 Python 3.x(在命令行里输入 python --version 或 py --version 看看有没有)。) [; N; e( k. _1 z1 | W
先写一个最基础的 百家乐投注策略模拟器(自己定义的规则)。
& f9 v$ S3 H2 v- Y2 U6 w/ z, Z( E. A' n V
步骤 1. 新建一个 Python 文件7 \8 G/ W# G2 s8 M e
打开记事本(或 VSCode、Notepad++ 都行,我用记事本)* U* d7 w+ W. k' d
把下面的代码复制进去。9 u4 G* a. B) d1 T- m
保存成 baccarat_sim.py (注意后缀是 .py)。( H' h# J& P: r+ b$ f0 V$ }( ]! m3 z
" j) Q& e, |- Kimport random
+ x6 k+ N' k* F# r1 y( |, i! Yimport argparse, K* y2 k/ h3 P/ k3 ^$ J0 c& g
" P5 f4 Y0 F1 z# 初始化鞋子
7 `$ r: i$ ^2 P9 `/ V/ A* ddef init_shoe(decks=8):3 ]* {2 v3 d/ [5 Q) J. x
# 每副牌52张,8副共416张
: h$ @! t, K# E$ C shoe = []. B8 s6 k/ M9 m: E, z2 B. U5 W
for _ in range(decks):4 }8 Z6 }" O) N: H+ \0 ?0 ?) T
shoe += ['P'] * 24 + ['B'] * 24 + ['T'] * 4 # 简化:庄24, 闲24, 和4+ m% E N8 Q' W9 U
random.shuffle(shoe)
) t/ R' x" I# T% D! i, {/ c return shoe
- H* [1 r: u' p: V* v
" R5 B; K" Q v- z3 |# 发一手
- C! C9 S1 w1 `! hdef deal_hand(shoe):1 e* Q; y3 G ^) N1 B
if len(shoe) < 6:
9 w7 w7 X6 C8 A* }' K) P6 E2 k shoe[:] = init_shoe()
- \4 t/ z+ s; ]/ }+ {; m return shoe.pop()+ R3 z; _# x8 M$ y* P, v( h
' l; e" m' s2 ]/ ]# 模拟下注法 A/ k9 a6 |. v6 o4 G/ g; Q
def simulate_strategy_A(num_shoes=1000, commission_on=True):
3 x. O# J* p; A2 r2 b) j profit = 0; x" a/ r1 R- e3 U3 P% }, s
commission_paid = 07 Z$ A; Z- ^2 t* K
shoe = init_shoe()
8 o( @- I3 s. M2 C
* g: b( z* a- u # 策略参数
# t& s9 P5 o8 l* u, t sequence = [1, 2, 3, 5, 8, 13, 21] # 示例进级
$ {9 y' u# R6 ~( D' p stage = 07 A2 M5 t1 O9 @, |
target_side = "B" # 起手投注庄
6 c+ \: ]1 x3 e; l
( U# N% Q3 I4 G while num_shoes > 0:; g- p7 i1 M3 `/ d# l) U* p
result = deal_hand(shoe)/ r8 J, w- l! y6 E
" v# C% x; D3 [+ i; J- Z# m8 B
if result == 'T':
4 ]$ X& q0 {: G' w" \- R; |, q # 遇到和,不输不赢,重投# P1 u% u9 M# B9 ]
continue
# \0 X$ i* P6 v
2 f. t9 D, q- U1 D bet = sequence[stage]
' \7 K3 o% t9 l% o4 E( r2 p
7 s) X4 T6 z) `2 r if result == target_side:
4 T, O' Y! X- {$ w' l m3 t6 J& [ # 赢
5 e8 K" Q" A x$ { win_amount = bet6 E. U& G) p2 r
if target_side == "B" and commission_on:& \0 k4 e: ?" n4 Y* g0 U
win_amount *= 0.95 # 庄赢扣5%抽水
' e F% T5 _: s& l$ D: x commission_paid += bet * 0.05
# C' K( Q* o6 W# b; i2 j profit += win_amount
f& k; b: @( |9 J. n$ N9 x4 @ stage = 0 # reset( S7 x' @* j: ^, j
target_side = "B" if target_side == "B" else "B" # 固定庄(A策略固定)) o: Y( Y2 Z' I, ]! [
else:% B' B% _( s* U
# 输2 p: c; k1 Z; e8 N) k9 }4 s7 V
profit -= bet
0 B: I2 A3 J+ E) M stage += 1
2 e- t; t1 w# o; k. o if stage >= len(sequence):
6 {; w3 i% I H1 N stage = 0 # 断缆reset4 ?; w& ~3 K% Z4 t; k
num_shoes -= 1- L3 ~& p3 b* p' i# G* \
+ l2 e: t* k( N1 N0 v S# f
return profit, commission_paid
. o. d2 i5 a: b. \8 B
2 Z# b2 y* D/ u: k8 \# 设置命令行解析+ x$ s0 [4 k, F* E* j
def main():5 K% D0 L/ K2 B/ G" I* Z2 x
parser = argparse.ArgumentParser(description="Simulate Baccarat strategy with commission on/off.")5 P; u B4 h5 \+ X. [
parser.add_argument('--commission', choices=['on', 'off'], default='on', help="Enable or disable commission on banker wins.")# ]/ W9 D: Z2 X; C% Y2 P
parser.add_argument('--shoes', type=int, default=1000, help="Number of shoes to simulate.")
& w0 a6 W: e$ \0 y+ U; g
0 p, X2 N2 l2 ` args = parser.parse_args()$ ~' @( C' f7 [1 f2 M' [
1 y, U9 I. s1 ]8 k, H& u* d # 抽水开关:开启或关闭% T( D) b; `$ U. f+ s$ t! H% u
commission_on = args.commission == 'on'2 n( ?9 I/ ]& T* g G: e) X
& ?4 O- r, L& d( r$ T+ w result, commission = simulate_strategy_A(num_shoes=args.shoes, commission_on=commission_on)
% G' G, ]$ o( w. j% F print(f"最终盈利: {result:.2f}")
4 a" W3 K0 r( F. { print(f"累计抽水: {commission:.2f}")
! L& U }9 ^9 _% F$ u; w% g# H7 }$ C* g0 I& R8 S2 R' V9 F+ G. f$ U
if __name__ == "__main__":
7 P( Q2 @7 S; t main()
* ~1 B2 P% E# Y) Y. T
" O' m* Y% b, P! w' I# N: S% E2 D8 o/ W
步骤 2. 运行- D! N% ~+ s, C$ B; f% n/ {
9 ]6 r# C0 s' V: \' v2 \/ E& F
在命令行里进入文件所在的文件夹,例如:7 H" M2 R' I* ~* T
cd C:\Users\你的名字\Desktop
/ K" a0 q0 R! c) g6 ?' _0 Qpython baccarat_sim.py7 v7 [! o" s0 b- `
# R7 z3 r4 l3 r a* o, Y. F输出会显示:! V- s1 G0 r9 I# s3 A" a2 e C
) b4 Q( z" D! ~7 E7 o累计盈亏: xxx
( L" _/ X' t0 c) D( `3 q累计抽水: yyy
0 {% r8 d* h7 Y0 `. R2 v9 r-------------------------------------
" } `. a7 u) K( L, s" j n实例:试跑3次, - |4 J5 a0 ~! {; J( B
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
1 o6 t, d, s0 m+ D* o最终盈利: -5360.35 ; [2 R$ m. l( N
累计抽水: 5176.35
- L1 T) Q6 K2 v# \ PC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
. l6 D% W* [2 q: ^- v7 m, Q, D最终盈利: -5661.65 ! A7 t' o* U, m4 i9 T% {( q Q
累计抽水: 5174.65
5 ]& b1 G" ~6 x4 d9 I7 w' WC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
( ? ^; W5 v1 N: U( [最终盈利: -4244.50
( Y9 g+ b$ V \6 G9 M累计抽水: 5176.50
4 g3 E$ O/ \/ K! L0 n3 {( M- u# [$ P0 b
3 {) G# G! J! C0 Z说明你的 Python 已经能正常跑模拟了。结果也很有参考性:$ u# a# \% _; F$ n0 @. u. a% t$ b
! ]" s: C! f' f) e7 J
累计抽水固定在 ~5175 左右 → 这和你设置的「抽水开关 ON」一致,因为你每手下注金额相同(例如 8 单位),程序是按 Banker 抽 5% 计算的,所以长期下来,抽水会稳定在一个范围。
- R, V+ V T* @3 B) P4 g# ?$ P, G* D4 X( o- A
最终盈利为负数(-5360、-5661、-4244)→ 这说明在 100,000 局的模拟中,哪怕加上和局不计,下注方向固定,数学期望依然是亏损。" ~: T( S, V# Z N/ n d% w) q
这条缆不能直接用,用了会输。必须改缆法,或改缆法并且改下注规则。% a# ~$ a% F6 |/ V
人们喜欢举例盈利,有吸引或牛逼的效果。。。用亏损的例子,可以真实告诉你,道阻且长不容易。+ u% k* [/ Y7 J r. x! z# u
但是别沮丧,办法总比困难多。只是,你自己悟的,是最好的。
# y4 k5 o$ q) r2 k% a1 G4 u# k5 a2 \( V1 c% {( s" j X8 q
启发,,,可以变更缆法,改变庄闲比例,指定胜负路。。。。(待续) |
|