|
|
楼主 |
发表于 2025-10-31 11:15
|
显示全部楼层
本帖最后由 Banker 于 2025-10-31 11:17 编辑 . C1 Y4 b8 C! a# Z, _; w
T7 l$ c8 j+ W' ^) \0 t9 `
可用Excel,逐手模拟过程(但 Excel 跑不了 100000 靴,会非常卡)。
$ \4 V' Z% L6 q; @; aExcel 更适合 直观小样本测试,Python 才能跑大样本,Python 可以试试N万-1亿靴,10亿靴,有没有没必要?你高兴就好。4 r+ t' W' ^8 n! R9 c S& S
. w. o5 H0 h; H
在你电脑上运行 Python 模拟器 (版本3.0以上,若没有,在Python官网下载安装)
' q( E6 `3 @" x2 e4 B5 ^* H, Y假设你已经安装了 Python 3.x(在命令行里输入 python --version 或 py --version 看看有没有)。
. \& X4 O. N/ h0 n先写一个最基础的 百家乐投注策略模拟器(自己定义的规则)。$ O# m/ }% d" J1 m7 F7 }
, P) Y& ]: m! ?3 m
步骤 1. 新建一个 Python 文件
9 n) k5 ]. R, T8 o打开记事本(或 VSCode、Notepad++ 都行,我用记事本)
6 q" m6 E3 O8 j( o a把下面的代码复制进去。4 d4 B. \) }' A( w- r! T1 _
保存成 baccarat_sim.py (注意后缀是 .py)。. i2 ^( S: V2 \+ g( H
" w2 P9 A6 S1 z, K; }
import random8 E6 M& x# [% P" s4 V# \8 ?4 L
import argparse4 U" r( j# n2 O' \1 Y4 x# Q) |4 M; v* d
4 Z+ f* q% Q- z) E( |0 l
# 初始化鞋子
9 S. B0 B5 }5 H5 o3 d6 Kdef init_shoe(decks=8):
4 I- G/ U9 t* \0 x$ t) G # 每副牌52张,8副共416张4 R: v/ A# \4 q; p6 v
shoe = []4 F( W/ M; o) {# f ?6 y4 ] m3 b) O" m \
for _ in range(decks):; g z+ ?. V; F) o8 l5 D: {/ _
shoe += ['P'] * 24 + ['B'] * 24 + ['T'] * 4 # 简化:庄24, 闲24, 和4/ j4 V& Z( N' d; F$ G# [
random.shuffle(shoe)
* Z( Q. ?% p( M- E return shoe
- h. K1 H; g) o2 \( H5 O9 z
* M l" L7 C' h2 Q8 p _# 发一手
' p2 }0 p$ b/ n+ jdef deal_hand(shoe):
/ g( E( G$ x ]6 Q if len(shoe) < 6:: Z' |/ t2 W) F9 q/ m& [- @- @
shoe[:] = init_shoe()
4 C5 U3 N! U" ~# |& g' k return shoe.pop()
4 o9 I3 O9 c* B. C6 ?* a6 l* G9 q7 E, L8 Q* B/ u& f& k
# 模拟下注法 A* C7 C( x1 A* Y' O( F8 R! T
def simulate_strategy_A(num_shoes=1000, commission_on=True):
. ?) m. b; n0 Z profit = 0# B7 T3 d$ _ c0 G
commission_paid = 0! @: t( _8 }$ ^
shoe = init_shoe()
1 L- p! x. P* L/ E" ~ # y; e2 X7 a& R! _: N( A# |
# 策略参数, D* v+ N/ C' \; E: I: Q0 R
sequence = [1, 2, 3, 5, 8, 13, 21] # 示例进级
9 T4 S# y0 S2 Y9 v, q stage = 0
) d" r$ }1 q' T0 M target_side = "B" # 起手投注庄
( e+ ]) w" h$ H7 n/ V/ D- a. Y3 e* J- b( X( G
while num_shoes > 0:
, Y2 q J1 U4 X4 ~, V2 n result = deal_hand(shoe)5 ?- t/ P0 D9 |+ T/ [7 J
. a* t! k( j) o s if result == 'T': 1 t8 \ T: q5 x) d2 E" f) z0 k
# 遇到和,不输不赢,重投! d! }8 F/ x( \6 ^9 t
continue
) ~1 E- @+ I! k* `$ a4 ^
& M% @; Z4 Z! U, q" c: ~$ k bet = sequence[stage]9 Y2 |9 R* {8 f1 ?9 w+ |
1 s' I: k; _ ~% L: ^8 g' h if result == target_side:' c" Q% P9 K) [: `* Q% ^7 M" z
# 赢
' z, M e- l* ~1 [, x( e, W9 e win_amount = bet
8 ^) O* K% C6 A, O if target_side == "B" and commission_on:
# G1 z$ T) }# ~2 e win_amount *= 0.95 # 庄赢扣5%抽水
9 W8 L( A( a& l* d. J commission_paid += bet * 0.05, H3 A6 c. {: o+ |
profit += win_amount
0 m' R0 w1 x3 S' T6 o$ n8 o stage = 0 # reset4 K. t. ^+ j/ r2 \' @, s
target_side = "B" if target_side == "B" else "B" # 固定庄(A策略固定)
- x3 K( E' s. [' k) ^$ |% K2 t else:
% B1 y" ?* o5 Z6 w! ? # 输6 g! p& J& P" W( p
profit -= bet
3 Z2 C9 ?/ [$ m4 }# p! A stage += 1( D/ Z8 E, T( {2 v
if stage >= len(sequence):
% x1 G, F0 g$ y- g$ y4 z% F stage = 0 # 断缆reset
3 j/ `5 N, n' P0 q3 X( O7 T j num_shoes -= 1& c2 t* Q5 I- G4 d; T) ]
# W' c! m& M. ]* v. ~ return profit, commission_paid7 V1 w' a, g( i* s8 {% _/ ?; f
3 r4 Q6 ~2 i0 G Q8 D
# 设置命令行解析
# k4 g& |: z/ z! y) k" D/ b2 f% Hdef main():2 ?) y3 Q d4 U, m
parser = argparse.ArgumentParser(description="Simulate Baccarat strategy with commission on/off.")
# ^2 H* [: @# a7 I1 p parser.add_argument('--commission', choices=['on', 'off'], default='on', help="Enable or disable commission on banker wins.")
& b; Q: O; ]; }1 N" \7 _. i- ]0 ^ parser.add_argument('--shoes', type=int, default=1000, help="Number of shoes to simulate.")' ~; G1 A i: O4 d5 I
$ j+ l3 }8 K4 `* i$ b
args = parser.parse_args(); I% H$ W+ i+ T5 ]. i0 F) e: y& E
( B, E9 c1 X+ Q0 k7 e # 抽水开关:开启或关闭
! e" e: Z( H; n- ]* f6 B. B( [" D commission_on = args.commission == 'on'; E' t9 u% L; m5 {2 M! B
7 R4 W& h% m* h- X h
result, commission = simulate_strategy_A(num_shoes=args.shoes, commission_on=commission_on)9 X8 |) X3 j3 o! D( S1 N ^
print(f"最终盈利: {result:.2f}")7 o& U: `0 m. ?' j3 E% J/ ]8 D) _5 \
print(f"累计抽水: {commission:.2f}")
- r# @" A: ~8 l, M8 ~" p! v6 K6 h$ ^) |, i- e4 O. p' v# _6 ?. i, Q
if __name__ == "__main__":
) K. f+ x9 l! U) j, S& e% H main()6 T) {8 U$ h: c% I7 |- M
: I& Y1 G0 e. I+ ]
% _. S4 M( l' y% ]: P0 N步骤 2. 运行) y- [, [9 D/ i9 O: Y, V& W
f/ }4 W! ~ E8 w在命令行里进入文件所在的文件夹,例如:8 n) j& @. w% j: g; `7 C& U! e. n" f
cd C:\Users\你的名字\Desktop6 c4 V* q8 r" f) T/ x; f1 x' G
python baccarat_sim.py+ i+ I# X) e2 ] Q3 K' r4 b
3 ~* s. h+ x0 _# c: [输出会显示:. c1 X" L( h. d# i( f$ z5 E9 A8 M3 b; R
) \! w& \, y/ ]# Q1 x5 [
累计盈亏: xxx
& t0 `" w2 q8 q- B- p/ A累计抽水: yyy
6 @+ D0 a, c/ R6 ?4 b-------------------------------------
8 g; f4 |% n/ V5 n实例:试跑3次, + B3 |) U1 @, k
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py ) F5 V3 @8 a/ d6 N& E
最终盈利: -5360.35
: h; Z% L* k) A0 b, G0 v累计抽水: 5176.35
) C+ j$ B( H% J2 W7 O$ R* fC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py ; K; ^/ v* J) z" i+ [3 M) f
最终盈利: -5661.65
% L2 _, q' q5 K6 E9 S9 p, n累计抽水: 5174.65
5 v6 S* b8 O3 ?' e, l0 zC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
; Z0 w% s1 ?1 d最终盈利: -4244.50 3 U+ l& A* H/ @5 ^9 r
累计抽水: 5176.50
, ^+ {3 M2 S) ]9 c5 H) a$ O5 A
- I7 |# J" {6 E. |1 U+ f' E3 n- z8 L说明你的 Python 已经能正常跑模拟了。结果也很有参考性:2 W, ~3 r- O* }# B6 j6 Q' c' |
8 ]5 p* g" K! Q/ }! N累计抽水固定在 ~5175 左右 → 这和你设置的「抽水开关 ON」一致,因为你每手下注金额相同(例如 8 单位),程序是按 Banker 抽 5% 计算的,所以长期下来,抽水会稳定在一个范围。# g! q" B6 W* M( k& p
; o4 v+ |* T: v4 d9 b最终盈利为负数(-5360、-5661、-4244)→ 这说明在 100,000 局的模拟中,哪怕加上和局不计,下注方向固定,数学期望依然是亏损。
5 O" D+ h! a$ w1 d这条缆不能直接用,用了会输。必须改缆法,或改缆法并且改下注规则。
* x. f# Q" H |, ]人们喜欢举例盈利,有吸引或牛逼的效果。。。用亏损的例子,可以真实告诉你,道阻且长不容易。0 m) W- R1 ^3 ]/ y# d
但是别沮丧,办法总比困难多。只是,你自己悟的,是最好的。
: W. _! t1 M2 k( `. z: q0 W3 r( E6 O! q8 |- \
启发,,,可以变更缆法,改变庄闲比例,指定胜负路。。。。(待续) |
|