|
|
楼主 |
发表于 2025-10-31 11:15
|
显示全部楼层
本帖最后由 Banker 于 2025-10-31 11:17 编辑 2 w7 Q' ?# S6 d
( Z: I2 t2 a/ H2 d# R可用Excel,逐手模拟过程(但 Excel 跑不了 100000 靴,会非常卡)。* f! K/ H! k+ I
Excel 更适合 直观小样本测试,Python 才能跑大样本,Python 可以试试N万-1亿靴,10亿靴,有没有没必要?你高兴就好。
* p4 M" r! M# ?$ c6 A, z5 l
* l/ }" \1 L5 Y- D ~在你电脑上运行 Python 模拟器 (版本3.0以上,若没有,在Python官网下载安装)) V: P% g2 c( D) ?9 C4 V
假设你已经安装了 Python 3.x(在命令行里输入 python --version 或 py --version 看看有没有)。' t% N% X' V& V, z8 k' ~( u) N' ?
先写一个最基础的 百家乐投注策略模拟器(自己定义的规则)。) p3 [+ K- ]8 C( n
& L! M: w4 A7 g" `# z步骤 1. 新建一个 Python 文件
# U* i$ b0 b: c: [/ |打开记事本(或 VSCode、Notepad++ 都行,我用记事本)
. |1 E8 h' ]( K0 w4 I: C把下面的代码复制进去。
4 ?* }4 p# H$ }保存成 baccarat_sim.py (注意后缀是 .py)。* _- ~1 \2 t( Z! N" W, d' |
8 X) ?% f+ A- Y4 \3 @! Z
import random
" `1 z6 z6 b- u2 j- k2 Aimport argparse
: w2 }5 _' b& S( I. ^$ q/ c, X) H& W4 U9 b6 l' _% |% X) E
# 初始化鞋子5 i$ j, J2 i$ ?3 L7 {; W# u+ a. j
def init_shoe(decks=8):7 z- n7 _- m1 j. \- \
# 每副牌52张,8副共416张
, s- [* I. c( X& L4 C. {& n shoe = []1 m# r" Z1 s4 t% x) Z0 i, c0 r9 W
for _ in range(decks):' e+ L8 h" l5 Q* D5 ?' B: x
shoe += ['P'] * 24 + ['B'] * 24 + ['T'] * 4 # 简化:庄24, 闲24, 和40 Y2 i6 n$ Q) D. N1 e5 f
random.shuffle(shoe)0 _/ G9 {" R: X2 R( V1 y
return shoe' A2 Q+ `4 \ @2 @
5 x; S# ` ]6 ~/ A) z% f# 发一手' b3 x0 `8 R% n( |
def deal_hand(shoe):- U( t, N; f4 c' _# Z0 K: Z% }
if len(shoe) < 6:
0 X: A/ x- H1 z8 o( s shoe[:] = init_shoe()
2 r' W; z2 h4 X return shoe.pop()
& ?; F) V, ], l: ^
, V+ X3 S( ?; y6 m# 模拟下注法 A6 P6 v7 M b+ O% M
def simulate_strategy_A(num_shoes=1000, commission_on=True):
* p2 m* h7 {6 X8 I( C9 m profit = 0$ A1 x1 Y# ?$ d$ f3 K" z0 g" Q
commission_paid = 0 m, K. v6 Z0 T# f. |/ t! B
shoe = init_shoe()- F- w3 T' G7 ^" x3 f5 U
% |2 J* n$ {) n. X! A. }1 f
# 策略参数! B$ Q6 f0 ?; b! T
sequence = [1, 2, 3, 5, 8, 13, 21] # 示例进级
7 D3 @- r- e( L) i) I9 s stage = 0- [/ M+ N. z# x5 U
target_side = "B" # 起手投注庄
! M" h* B* k G7 D
' p0 c/ ^/ f5 g3 t& F# t while num_shoes > 0:% P% ~9 f7 {- X2 Q% G- g
result = deal_hand(shoe)) r! F, W" O6 K9 w" e
& ~0 }6 _+ x+ ~, L9 h if result == 'T':
4 v3 _+ S: o7 @ q+ } # 遇到和,不输不赢,重投) j# x1 y7 r2 X1 k* F3 L
continue
+ Q# k# c5 M1 @4 N. [ `- T9 M) F/ `0 [# e& g5 e/ K+ H# Q
bet = sequence[stage]
9 j% ?4 U8 W7 e, @ ; f7 _7 u, c- a* k1 A' l
if result == target_side:9 S6 B4 F; b% K- t9 u, q7 S% j
# 赢' U+ r1 S- y8 P/ `
win_amount = bet
1 C$ B# s7 s2 g1 t& l if target_side == "B" and commission_on:8 }' c" ]6 {) b( L4 G7 E
win_amount *= 0.95 # 庄赢扣5%抽水( I( A9 z. E* v
commission_paid += bet * 0.05
% n8 B/ V# S$ N3 E profit += win_amount
( `' ]6 `2 l6 P% V stage = 0 # reset
; _, Z) q9 P! d# _ target_side = "B" if target_side == "B" else "B" # 固定庄(A策略固定): f, _, K# O5 g: {* n2 V2 Q6 x
else:- ^7 D3 H5 b% I* C2 ?
# 输, G* t9 [( z# g" y: @2 h
profit -= bet& k( f6 t7 ?' l# d: G
stage += 1
) H, ~' T) g! ^ if stage >= len(sequence):; q$ t5 n( N& W* j
stage = 0 # 断缆reset
+ B# B; Q+ G( |+ X3 ]7 m num_shoes -= 1
' c. A8 N" W+ E6 B1 b k
5 C9 [. H9 P! k% S8 E return profit, commission_paid' A6 K; }% q4 n+ {( D7 ^
9 M& U1 Q7 H' t. ]
# 设置命令行解析
" S9 Q- K4 M qdef main():
; A! y5 x% \9 T& q& q parser = argparse.ArgumentParser(description="Simulate Baccarat strategy with commission on/off.")
4 v# T( F) A1 ~) O* b; b1 c parser.add_argument('--commission', choices=['on', 'off'], default='on', help="Enable or disable commission on banker wins.")
|: O6 k O% C: P parser.add_argument('--shoes', type=int, default=1000, help="Number of shoes to simulate.")
I& m& r' \' \! n$ v0 ~3 l0 h
8 P+ B; b& i" g args = parser.parse_args()
" R+ m; a4 \- M8 o3 e/ P ) P, n7 h9 d$ n& I
# 抽水开关:开启或关闭
3 M! _1 ~+ E) i L( p& G commission_on = args.commission == 'on'
! T4 V* L0 J8 H0 U2 g1 S, T( ]) N
- Y5 r( j& J/ I/ X result, commission = simulate_strategy_A(num_shoes=args.shoes, commission_on=commission_on)
* @: u' h! e4 g! s' r print(f"最终盈利: {result:.2f}")/ G& z. L) ]3 X% N2 k
print(f"累计抽水: {commission:.2f}")2 g3 L, _# x$ M9 y- d- }! U7 y7 `
X+ J, W8 _5 o0 j, F5 Xif __name__ == "__main__":' h* B9 F G: U6 G) y0 \
main() d' A% x/ g8 i7 E/ {
: N1 Q! s# S, K0 t) r
' Q/ U, X/ k/ N1 m2 R& v0 [步骤 2. 运行7 K8 ~ }8 D( N) z* G& E. u. R _, F* w
6 j1 D7 P! _. u* m' I9 t
在命令行里进入文件所在的文件夹,例如:& \; v! ~" V" m% F
cd C:\Users\你的名字\Desktop
. X. v- X3 {. h7 N4 e% E9 ipython baccarat_sim.py: f' j+ n+ c4 v, \8 R
$ _/ `- J3 H* L* N, ^) G, {* o
输出会显示:
6 {3 ?. K/ ` t8 }7 ?5 E! Z1 ^ Y6 z m" G4 S( d
累计盈亏: xxx
& z! E+ h$ h1 T# Y# X Y累计抽水: yyy `. T! J9 O1 W* `
-------------------------------------7 U5 Z+ k& B% t% N- B/ P: w" E
实例:试跑3次,
w4 ?$ u% n9 M- N5 cC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
- I! g$ w* s1 d2 r) a! H1 ~: q. @) A最终盈利: -5360.35 $ w% u" f0 J: i0 f% Z( ]* i, Z# o
累计抽水: 5176.35
: z- ~ i# b: Z& V5 h, S7 ]7 g3 IC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
* q3 k- Z$ D4 B! Q( u" M最终盈利: -5661.65 6 _" d0 Y! T9 v6 S
累计抽水: 5174.65
" `, {7 G4 Y' c( c; c0 FC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
6 N! N8 g2 K1 W, d7 H5 v. j, @最终盈利: -4244.50
m1 Y; |- T( m- x9 o" q累计抽水: 5176.50
+ o( R# ?" V! W j9 \6 W, p2 J" L3 h2 F v: }( S
说明你的 Python 已经能正常跑模拟了。结果也很有参考性:
$ r$ _7 O; y9 ?$ U9 F: w
! b+ R7 s1 B1 W5 L6 v' z' W累计抽水固定在 ~5175 左右 → 这和你设置的「抽水开关 ON」一致,因为你每手下注金额相同(例如 8 单位),程序是按 Banker 抽 5% 计算的,所以长期下来,抽水会稳定在一个范围。# N. S0 D2 t5 V( }% S6 B
. M' g- a% D t0 l; M: z/ Y
最终盈利为负数(-5360、-5661、-4244)→ 这说明在 100,000 局的模拟中,哪怕加上和局不计,下注方向固定,数学期望依然是亏损。
! e. N) l6 `3 z1 R& Y这条缆不能直接用,用了会输。必须改缆法,或改缆法并且改下注规则。( ^3 V$ I( k2 X* m! ^
人们喜欢举例盈利,有吸引或牛逼的效果。。。用亏损的例子,可以真实告诉你,道阻且长不容易。
0 F: F( t3 S* f, n, v+ K% ~但是别沮丧,办法总比困难多。只是,你自己悟的,是最好的。
& m1 v: I* X3 c5 p
: [# R( N9 q) G8 ^: F/ t启发,,,可以变更缆法,改变庄闲比例,指定胜负路。。。。(待续) |
|