|
|
楼主 |
发表于 2025-10-31 11:15
|
显示全部楼层
本帖最后由 Banker 于 2025-10-31 11:17 编辑 * W$ Q( r; h u
w+ e/ Z9 k# Y, [# g* Q v可用Excel,逐手模拟过程(但 Excel 跑不了 100000 靴,会非常卡)。% V' k Q3 y: V: h
Excel 更适合 直观小样本测试,Python 才能跑大样本,Python 可以试试N万-1亿靴,10亿靴,有没有没必要?你高兴就好。; z- h. [& _6 E
1 r* d0 U/ r/ Q2 m' U% v5 H在你电脑上运行 Python 模拟器 (版本3.0以上,若没有,在Python官网下载安装)* V. G3 Q# s3 j4 A# I+ \
假设你已经安装了 Python 3.x(在命令行里输入 python --version 或 py --version 看看有没有)。
7 E$ K/ z/ b" z3 A4 _- K6 g先写一个最基础的 百家乐投注策略模拟器(自己定义的规则)。+ P6 O y; w& \* W" u
- z+ [: N. u- E' m" X* ~/ P6 Q
步骤 1. 新建一个 Python 文件
# A1 I0 }+ t V* j; \8 ]打开记事本(或 VSCode、Notepad++ 都行,我用记事本)! G7 ?, Y+ H- Z$ Y1 d
把下面的代码复制进去。( E# N+ x" w) h: e$ n# M
保存成 baccarat_sim.py (注意后缀是 .py)。 A* X, i1 W, E0 q, ?9 G! [
# B9 z, a9 K- v0 L- I5 Gimport random, O4 E/ v, z# C
import argparse
/ E& |% c- D2 f5 I( T( e0 S: W
4 m; \8 J( }7 H( ~! O: {0 O0 J# 初始化鞋子
" p& |6 E q* m }2 L+ Kdef init_shoe(decks=8):! C1 ?" f& A4 m }' l( e8 ]9 U9 o! k
# 每副牌52张,8副共416张
n1 g) m1 q+ p/ b; o; L1 t$ z8 f shoe = []
( {9 p4 n; L# ]: ^. L) R for _ in range(decks):. _3 D) u, \6 y7 ]' N1 x* e L
shoe += ['P'] * 24 + ['B'] * 24 + ['T'] * 4 # 简化:庄24, 闲24, 和4
' t3 f8 A2 N( f5 s" ^* | T+ Q& u$ N random.shuffle(shoe)
! j; \$ L$ y- s9 J- U+ R return shoe
5 i# ]+ E5 Z. D( G
8 j7 z( s' `0 h6 b( h/ G' H* ?# 发一手% y; _# P& f% m& l
def deal_hand(shoe):5 P/ |; }3 I, k/ w# ~) L, Z. X
if len(shoe) < 6:
9 L- N; v, S3 B' ~% W1 m- R shoe[:] = init_shoe(). |& C% @0 A, \
return shoe.pop()
# u% F3 E1 M. I9 g8 B' e* ^1 |$ S9 l) N* q( d2 i8 X* }
# 模拟下注法 A
9 r6 s4 A" w# M8 odef simulate_strategy_A(num_shoes=1000, commission_on=True):) r* [ m) b3 D- o
profit = 0
% O: o& w) u- a3 [3 E9 u commission_paid = 0% _" U: h o* O/ a1 R6 W
shoe = init_shoe()
8 L0 s; ] G( }$ w$ S . R1 h0 t4 i0 ^6 `9 R6 l
# 策略参数* P1 L2 ^" L, Z
sequence = [1, 2, 3, 5, 8, 13, 21] # 示例进级% [/ \/ z5 s* l4 e$ q0 w- Z
stage = 0
0 C8 Q, _' k3 @ target_side = "B" # 起手投注庄
6 f# D* q! Z" ^/ z9 |: Z% ~9 r9 |+ ?8 T: _: k T0 ]3 o
while num_shoes > 0:
* E9 v) C8 X$ i) t8 u+ P result = deal_hand(shoe)
& D$ o! a' _/ P2 Q: U6 X9 f- z3 o3 }. }; H' ^2 X: }6 p! R: z/ n
if result == 'T':
4 A$ `9 z% c, J4 i, | I # 遇到和,不输不赢,重投
% R/ q7 ^3 F1 b( `+ [8 ]7 h continue& E U; k! g, I
0 [: H' y* N6 C/ d+ W0 a7 ~ bet = sequence[stage]9 S9 }$ C: U* l, p' ]; _1 _3 n0 X, N, M
9 j* M- P I. j+ z3 Y/ p0 x if result == target_side:
! g$ z% L. c! T4 L" s # 赢
+ ~; a2 X5 l; p: x) { c' s win_amount = bet
3 @! T- S& D( l if target_side == "B" and commission_on:6 L5 l& B7 i6 y: y% S& x) s9 x
win_amount *= 0.95 # 庄赢扣5%抽水* p/ Z/ k2 V! n/ r* b k2 z
commission_paid += bet * 0.05
9 }2 G( J% }. W2 Z profit += win_amount
' ?2 J* W9 \! x) m5 J# p stage = 0 # reset8 r8 @3 b% `- K; m% v6 @
target_side = "B" if target_side == "B" else "B" # 固定庄(A策略固定)
2 g( B4 i& J* D6 r- q else:9 V% t# `6 V' d; s8 m x
# 输0 _* S# ]: Z6 b5 V
profit -= bet
1 \; ~' j4 Q( }/ C# t p stage += 1/ ]8 i1 p% ^7 q6 e
if stage >= len(sequence):
, Q+ A5 C% ?+ M* e, s stage = 0 # 断缆reset( d" v: }2 i+ z6 F
num_shoes -= 1$ y) b: C* @0 e- I( d) v, `: c5 [+ D' L
3 e/ a! p2 o+ r) v return profit, commission_paid
; _0 g' ?) [0 ]/ P
* E* j! u& v6 z+ {+ [# 设置命令行解析) S, O3 M0 x3 C' B" J
def main():
& Q# B; v" v) _- @9 ?* W parser = argparse.ArgumentParser(description="Simulate Baccarat strategy with commission on/off.")" u" d3 t8 H7 l
parser.add_argument('--commission', choices=['on', 'off'], default='on', help="Enable or disable commission on banker wins.")6 e4 e$ b4 _/ \8 w# O1 |
parser.add_argument('--shoes', type=int, default=1000, help="Number of shoes to simulate.")
5 P" O' f. S# d- D; v
/ _) }( w+ l' h' e/ D: H/ G% w$ ` args = parser.parse_args()
* n4 [9 t5 r6 {: N! D. F% Q 4 M H# G) |8 a( a
# 抽水开关:开启或关闭
5 [! Q3 W8 O5 L commission_on = args.commission == 'on'* A! a- L3 {- P5 y2 k/ z& J
& H! D- M/ ~% K0 s% e1 O$ I
result, commission = simulate_strategy_A(num_shoes=args.shoes, commission_on=commission_on). n8 X" J: r. V7 } r! G' h
print(f"最终盈利: {result:.2f}")" T9 h2 B0 a `* p' m: p, O
print(f"累计抽水: {commission:.2f}")
, b8 S/ M g% }8 l. _7 B9 t. m% J5 V" J! b; {
if __name__ == "__main__":: S) E3 ^. @7 u: O v
main()
0 K u4 S2 \& w! x6 r8 |. @+ W$ k: Y8 O
: P9 L7 W4 m0 J6 a2 K4 e步骤 2. 运行+ }# C5 m, q* t3 H- h$ h
) E2 T/ V' V3 u5 }" M在命令行里进入文件所在的文件夹,例如:) H" { Q6 k* u1 {
cd C:\Users\你的名字\Desktop
) T/ T- X2 I/ w& Apython baccarat_sim.py
/ c( k( K; l) N2 {# _
; C2 n T# x, ^1 H2 W" R输出会显示:+ o6 N& r# q& S. _8 W8 \6 i7 G
% m/ u! l. ?: F7 x, L" R x
累计盈亏: xxx
# u4 T0 z; V7 z累计抽水: yyy
( Z% X7 x" A' }" @9 A4 `* h6 i-------------------------------------
4 {3 \! _5 O& A6 t实例:试跑3次, ( f k8 N# K- W K+ c/ s1 Z' A- L
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
8 u u) v' i' {' D8 q最终盈利: -5360.35 6 V* A2 f0 _8 v# F
累计抽水: 5176.35
$ X4 u4 ~* a' s! e- \C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py 0 N5 c: p& X& @0 G) ~
最终盈利: -5661.65
8 n7 D. w7 p# h/ ]' a/ ~累计抽水: 5174.65 - t2 E1 F C# p$ B( @# a+ {1 R2 T
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py ! [ c) c! o" n" m- x
最终盈利: -4244.50
$ s4 m1 v& r6 F' h0 q6 X累计抽水: 5176.505 D, U l5 n' }2 d/ p0 o
9 l6 H' M% u! @9 N) Q4 a说明你的 Python 已经能正常跑模拟了。结果也很有参考性:- `- u2 @4 m" P% h$ K
3 r9 J B$ n1 ^8 q# ?* a/ S
累计抽水固定在 ~5175 左右 → 这和你设置的「抽水开关 ON」一致,因为你每手下注金额相同(例如 8 单位),程序是按 Banker 抽 5% 计算的,所以长期下来,抽水会稳定在一个范围。! \: z x- a: u/ n K3 e
, s4 N9 w! Z" c2 I" z- {: E最终盈利为负数(-5360、-5661、-4244)→ 这说明在 100,000 局的模拟中,哪怕加上和局不计,下注方向固定,数学期望依然是亏损。
) C4 ]9 @6 F% U6 C ~, `7 u这条缆不能直接用,用了会输。必须改缆法,或改缆法并且改下注规则。
7 E' J3 j3 G6 r/ c/ r2 d人们喜欢举例盈利,有吸引或牛逼的效果。。。用亏损的例子,可以真实告诉你,道阻且长不容易。
+ A2 w2 ` ^: j: z$ u但是别沮丧,办法总比困难多。只是,你自己悟的,是最好的。' ~2 [7 O0 p: z
) L) [8 o4 Y+ A# M0 ?启发,,,可以变更缆法,改变庄闲比例,指定胜负路。。。。(待续) |
|