|
|
楼主 |
发表于 2025-10-31 11:15
|
显示全部楼层
本帖最后由 Banker 于 2025-10-31 11:17 编辑
' ^8 V1 U$ `, a. w6 e
" }- d9 t/ Z' y& d$ j3 I# c可用Excel,逐手模拟过程(但 Excel 跑不了 100000 靴,会非常卡)。/ B# @$ B# C9 L1 f9 w) M
Excel 更适合 直观小样本测试,Python 才能跑大样本,Python 可以试试N万-1亿靴,10亿靴,有没有没必要?你高兴就好。
$ S% u/ U( e5 }) |* Y7 G, \% u0 X" Z( R$ j/ g- j5 c+ I
在你电脑上运行 Python 模拟器 (版本3.0以上,若没有,在Python官网下载安装)
2 c' F4 T6 H4 I! k) O# x假设你已经安装了 Python 3.x(在命令行里输入 python --version 或 py --version 看看有没有)。. ^ E" y1 z X- r, c/ O
先写一个最基础的 百家乐投注策略模拟器(自己定义的规则)。
) q. S4 N7 J+ A! v/ n: R
3 A8 A4 ~7 q F- P& b+ f, t! M$ r步骤 1. 新建一个 Python 文件
7 h+ y# g D0 {2 ]/ Y$ Y; b打开记事本(或 VSCode、Notepad++ 都行,我用记事本)
0 N# j1 g* n8 y7 Z( P1 p) P+ p; q把下面的代码复制进去。
; _0 f4 u* d' y8 c" ^保存成 baccarat_sim.py (注意后缀是 .py)。
- |! y3 B& y8 }" J# u3 S5 T/ N7 u# R6 G+ k, ~* Q X8 T7 ~2 [, D7 V
import random' j, S3 N; V5 T$ m
import argparse
, t1 t/ S- y5 [0 y B$ B0 R7 ~. l. D2 M1 V2 e9 |' N
# 初始化鞋子, r( m# ~" }4 u3 k8 ]
def init_shoe(decks=8): l- M2 u$ Z: M
# 每副牌52张,8副共416张
7 {; A6 H ?- L* I- n- E/ s' P shoe = []: J& Z- ^. i5 D0 b0 _
for _ in range(decks):
8 Q( x! C& u: p* G) } shoe += ['P'] * 24 + ['B'] * 24 + ['T'] * 4 # 简化:庄24, 闲24, 和4
: f3 x8 n n% q' s, \ random.shuffle(shoe)9 L" r- b8 g& @! j
return shoe
4 X2 ?8 E; m. w7 j# p, ]8 {9 c
* a* n9 `/ a; O$ l$ X/ c# V# 发一手( R5 `$ c6 i1 t% b Z5 a: @. y
def deal_hand(shoe):! T N1 J9 j9 L" E
if len(shoe) < 6:/ m* _- D. i: A4 z8 w
shoe[:] = init_shoe()
" o+ V- ^. w. V4 |2 q7 I) U! c- D return shoe.pop()3 q" _& }. g f& c
5 q8 A3 M3 h, B4 t5 b) {, q
# 模拟下注法 A
4 R; B( `) V! Q) Q. I% a% Jdef simulate_strategy_A(num_shoes=1000, commission_on=True):
$ u7 M; Q# i1 b ` profit = 02 |" y; ^1 m: s; y8 q" a
commission_paid = 0
/ e) A8 H2 k% c' ~: A shoe = init_shoe()
$ e1 w/ y$ E# L9 S, ]9 \8 G4 F
( b9 g O8 H5 `. r, C. d: u, @3 R# H # 策略参数
) L, c' u; f+ J$ H3 u' j1 [ sequence = [1, 2, 3, 5, 8, 13, 21] # 示例进级" K d6 i9 m: t. ^$ g* n- r" K% `
stage = 0
+ v. q- n+ ~. n: y# W7 z target_side = "B" # 起手投注庄# e! B/ |( K$ Y6 }. r0 F
! }" K+ x; b; g! Y$ ?8 s( V* n while num_shoes > 0:6 m# \( W! s. e0 D& G! v
result = deal_hand(shoe)( d7 G! r( y# o4 C5 }
$ i# E# O7 j* [ if result == 'T': ; h9 b( U! x% {% m+ ^# p
# 遇到和,不输不赢,重投
8 X$ v8 D: k$ ^" U1 x continue
" A3 ^6 G6 u' a6 F L) |( g- W
8 c8 @/ ~- \. V: w. x' t3 Z" y bet = sequence[stage]6 i# G H& ?" O" k; o
; E, q7 K& T& p% s# e
if result == target_side:+ u8 z! u" \; \, r
# 赢- C2 |5 S: `" v- U- ]! X: x
win_amount = bet: Q/ y) _# E# K' A
if target_side == "B" and commission_on:
; V X8 U7 V2 X* O: ~ win_amount *= 0.95 # 庄赢扣5%抽水
4 m' U9 q- _' \+ H. l% I commission_paid += bet * 0.05
6 c6 a) ~0 X+ _ I, Z- a# ]: q7 q profit += win_amount
* y! M2 R% y% H) B stage = 0 # reset
8 `1 W1 `- ?8 m2 L( J target_side = "B" if target_side == "B" else "B" # 固定庄(A策略固定)
9 D& s, a9 N$ }$ ^ else:
. ^* ^; w1 z; x: B4 y& X5 E # 输
; e- ~: B s4 n" j profit -= bet
3 \+ K0 ^# N0 I stage += 1( b$ T/ H1 Y& r' e( |& c5 q) D
if stage >= len(sequence):
3 O$ }$ f$ F& W V: g" j stage = 0 # 断缆reset9 e3 ^) A7 w- Y) J/ {+ b2 |+ B
num_shoes -= 15 w. V0 ^; _ F7 h9 G2 e
, F% W8 U3 v1 O# s return profit, commission_paid/ N% a7 B1 P% Y2 h `8 R" b' V
) E8 N6 h2 I4 ?9 U# t# 设置命令行解析
# Q* s" L! U+ k1 p# Pdef main():/ I4 L. E4 c, O
parser = argparse.ArgumentParser(description="Simulate Baccarat strategy with commission on/off.")% h. o p# E) Q* [3 o/ D/ Y
parser.add_argument('--commission', choices=['on', 'off'], default='on', help="Enable or disable commission on banker wins.")
3 j# g ~' y6 p/ G1 s parser.add_argument('--shoes', type=int, default=1000, help="Number of shoes to simulate."): e3 @5 W% V" V3 c. [& V* K7 @
6 J4 ?9 r, p4 z2 p* y, Y
args = parser.parse_args()' q: `4 V/ p% i! S O* Z
, ^/ U) k1 l, X: C# } # 抽水开关:开启或关闭5 R& j$ Q* K4 |& c* ?
commission_on = args.commission == 'on'
. F$ `4 Z3 `8 q$ X' p 9 W1 g! Z; o9 O/ D5 g2 K7 }' T
result, commission = simulate_strategy_A(num_shoes=args.shoes, commission_on=commission_on)" m, y; @( {* A9 P
print(f"最终盈利: {result:.2f}")
9 D4 h, @/ }4 \' L3 V* L/ ^ print(f"累计抽水: {commission:.2f}")
+ J: e. u2 N+ s( e: d
6 W' j$ ]1 e* G+ Yif __name__ == "__main__":
* O& @$ O7 q' Y# E- Y main()
\ f2 m/ v: C) F' X5 b
9 K" R* g" x: k+ h" v; X
9 O- v1 }# p. k步骤 2. 运行' G; j% W! v: I- _
$ q; l0 w F6 }, d; [, B$ y
在命令行里进入文件所在的文件夹,例如:
" b( R$ ?4 r6 Ucd C:\Users\你的名字\Desktop% L) \( I# W3 |$ \9 G
python baccarat_sim.py. Y' O7 J. t! |( @! U- @
! h L" |, B9 q! d% p2 K: B9 _
输出会显示:
& C( t8 p9 }7 J6 j0 L1 X
# O6 X1 l$ H! p6 {% p( V X累计盈亏: xxx
$ u( K. ~7 U; F t3 D0 ]累计抽水: yyy4 B' c3 s- I, ]: `3 ?) V' [7 _
-------------------------------------* C8 t6 E. b6 s/ c' D
实例:试跑3次,
2 H* Q) j7 j) Z! Q' eC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
/ h! o8 c! I. K5 g- ?最终盈利: -5360.35
I- `. g1 z5 f, L累计抽水: 5176.35 & N* h$ ]7 A" I$ I
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py , I$ B k) q6 R/ y; O9 P% y6 x
最终盈利: -5661.65
/ a; k/ k/ N X( J: `+ `9 r累计抽水: 5174.65 ! n9 {7 d: V9 q6 f; Q/ a
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py $ M" i c5 ~% b& w' }( |& L
最终盈利: -4244.50
9 n0 m; k! n1 x# l, d累计抽水: 5176.50, P$ M! |; e; P8 [
7 A( N/ Q. E+ Q7 u6 n
说明你的 Python 已经能正常跑模拟了。结果也很有参考性:
% f1 e5 c0 v6 H/ p, A3 i- q. X7 c9 Z! {
累计抽水固定在 ~5175 左右 → 这和你设置的「抽水开关 ON」一致,因为你每手下注金额相同(例如 8 单位),程序是按 Banker 抽 5% 计算的,所以长期下来,抽水会稳定在一个范围。; C# G& q( e6 l0 n( L3 Q
. f+ ^6 d O5 g/ T最终盈利为负数(-5360、-5661、-4244)→ 这说明在 100,000 局的模拟中,哪怕加上和局不计,下注方向固定,数学期望依然是亏损。
; j% F8 L" r$ e; x! e# L这条缆不能直接用,用了会输。必须改缆法,或改缆法并且改下注规则。
* L' S3 g" k0 T$ B+ y+ x人们喜欢举例盈利,有吸引或牛逼的效果。。。用亏损的例子,可以真实告诉你,道阻且长不容易。
' R5 ?0 ?' [8 U9 R$ w% W但是别沮丧,办法总比困难多。只是,你自己悟的,是最好的。' v& s |0 h) k! W5 I& |
- ]" {6 N q& e |+ d
启发,,,可以变更缆法,改变庄闲比例,指定胜负路。。。。(待续) |
|