|
|
楼主 |
发表于 2025-10-31 11:15
|
显示全部楼层
本帖最后由 Banker 于 2025-10-31 11:17 编辑 % \" W3 x) z7 C E, k3 A
o$ q8 S3 N3 @( ^, e7 T6 l
可用Excel,逐手模拟过程(但 Excel 跑不了 100000 靴,会非常卡)。8 ?! v+ e4 \# O, U1 b
Excel 更适合 直观小样本测试,Python 才能跑大样本,Python 可以试试N万-1亿靴,10亿靴,有没有没必要?你高兴就好。
- {7 z8 y" K3 p( j4 q
, x) G5 f, d |) j7 |+ P! v在你电脑上运行 Python 模拟器 (版本3.0以上,若没有,在Python官网下载安装)7 `& Y. \* L: J6 b
假设你已经安装了 Python 3.x(在命令行里输入 python --version 或 py --version 看看有没有)。" t( u4 U1 B/ d) \* v2 F' @
先写一个最基础的 百家乐投注策略模拟器(自己定义的规则)。4 v5 d- e6 |- W( e! j% Y/ ~
! S+ _4 b; i9 I1 E* G
步骤 1. 新建一个 Python 文件! y& v- _3 n o5 q7 S) X
打开记事本(或 VSCode、Notepad++ 都行,我用记事本)3 l4 |. V$ M V1 V' K
把下面的代码复制进去。5 S6 A5 Q$ j2 C. K
保存成 baccarat_sim.py (注意后缀是 .py)。6 i3 Z0 e9 `" ?) o, k, T' @. b
4 `6 O+ S6 E, E3 u n, ?& \! Qimport random
$ c! r' R/ `9 H' A# v* r4 H- Wimport argparse
8 z$ x& I7 P* n9 P& b0 X [- j+ B5 b
8 c& S: N( Z, L( M7 G$ W$ E# 初始化鞋子2 C3 ~+ v# m' G
def init_shoe(decks=8): s0 V" @' N4 o; Y
# 每副牌52张,8副共416张8 n, K' M2 d8 w+ q1 U* i
shoe = []9 x+ ]# J% E' H1 p9 L, p& u
for _ in range(decks):
; b! P! ^' S" A. ?6 J! h shoe += ['P'] * 24 + ['B'] * 24 + ['T'] * 4 # 简化:庄24, 闲24, 和4, z6 D& B8 r0 J8 I9 _
random.shuffle(shoe)
# e' F- m4 v) E" [( a return shoe
Q: I* o% I5 F
2 L$ e+ i4 O" M. }" g" n# I& T5 Z, @# 发一手$ f* e1 P$ ~8 D: n# J
def deal_hand(shoe):
, g! d0 O( `/ ?5 Z if len(shoe) < 6:6 X) k1 g9 e# t: o j
shoe[:] = init_shoe()/ J S; i9 V# A" H u) B0 ]# J6 L
return shoe.pop()
, C6 U& ?$ m& e
0 w R9 L1 T! F$ Z8 S" ?# 模拟下注法 A
3 W4 |0 \9 z- ^% i" E4 F3 T5 Bdef simulate_strategy_A(num_shoes=1000, commission_on=True):) N: d1 W/ [) _6 d
profit = 0, E1 A4 d, i. }5 @3 e) n
commission_paid = 04 w" Q, m' B+ f" ?! h" U2 b
shoe = init_shoe()+ L3 {: {$ T1 J# k" G& Q. K5 x
' q \3 W( v% W' X5 G9 Y; ]# O # 策略参数
( s" V3 O1 ~* G+ a" e/ Y sequence = [1, 2, 3, 5, 8, 13, 21] # 示例进级* `* Z) T @1 S! k
stage = 0
7 H' }: Y% z9 i0 a7 J/ l$ q( u' h R target_side = "B" # 起手投注庄& [* a/ P' A; k, m" s; \1 B5 |. J& }
1 U% r1 Y$ I7 ]) C6 i while num_shoes > 0:
+ \0 t% o. F/ \ result = deal_hand(shoe) c' l- ~0 z, j1 U) R7 m4 w' v
4 b! k/ Y& q. g5 x6 G6 _4 ?2 S
if result == 'T': * I, X. |. z# B( z4 V4 Z& u$ B* ]
# 遇到和,不输不赢,重投' }1 ]% {4 _' y0 y5 k) I! g
continue
! p q+ F; [* D! L9 b9 r% m h# F+ e6 o4 J" }
bet = sequence[stage]
2 G& f X- E% M 3 w0 ?1 Q# c/ b
if result == target_side:
) G1 ?# Q" A$ p7 T8 a0 C # 赢" q) C) l4 P) e0 i; R/ `
win_amount = bet4 n) f4 |1 b- h, G1 x x9 {
if target_side == "B" and commission_on:' J8 @3 f3 \, a7 h* C: v
win_amount *= 0.95 # 庄赢扣5%抽水1 [6 j4 z" Y) r' n
commission_paid += bet * 0.05+ V( S3 f' p5 ?3 j) |! ?9 _; l% S D1 A
profit += win_amount
1 R1 J5 M$ l5 ]! u. V+ }- q8 m k stage = 0 # reset
% q# [! Z% ?- l; T target_side = "B" if target_side == "B" else "B" # 固定庄(A策略固定)
' P, U- J' t V* C4 U else:
# l5 ^% m5 G# \9 ]/ g8 [ # 输
. S8 T+ ^2 |: Q3 n1 I) x/ W5 A, K: c profit -= bet
/ c1 t6 s+ g! B/ D: K stage += 1
+ c3 ^7 k# @. f; |4 }" C$ q if stage >= len(sequence):- E% X7 b. K! r3 u
stage = 0 # 断缆reset0 L+ D0 J3 n$ T
num_shoes -= 1! f$ Z/ F% `4 D# L8 Z6 M
: a1 p8 [+ Z% B
return profit, commission_paid
0 o( `' m) ]' B3 _5 T! k& l. x& s1 ?
# 设置命令行解析6 a& U9 X" M; Q
def main():! D% J6 ^1 l1 ^& ?; M
parser = argparse.ArgumentParser(description="Simulate Baccarat strategy with commission on/off.")
3 [0 o1 [3 U+ r9 H, G& l parser.add_argument('--commission', choices=['on', 'off'], default='on', help="Enable or disable commission on banker wins.")7 T! h7 b! \ n6 ?! f: t, E4 h+ D
parser.add_argument('--shoes', type=int, default=1000, help="Number of shoes to simulate.")/ \, M$ p' Q4 m. v; J' @3 C
4 G9 ~$ z2 z' B% t3 G args = parser.parse_args()
& a: o; X: i6 W 6 k5 N6 X- b" B2 Z6 z
# 抽水开关:开启或关闭* H& T8 v- Y( G3 B, a
commission_on = args.commission == 'on'
- G/ R; ^( `, v6 Y1 z. m5 E+ g W
: O' _2 L2 g8 K, `, T result, commission = simulate_strategy_A(num_shoes=args.shoes, commission_on=commission_on)5 r- R: x( y2 U# x% M
print(f"最终盈利: {result:.2f}"). P/ b% s2 R* ~9 v: o2 O$ }, B- Q
print(f"累计抽水: {commission:.2f}")/ y% {5 _5 x. ^
$ \' H- K0 J' v
if __name__ == "__main__":0 y/ g6 H; a, v) T' H* ]
main()
) Q& X* }, X" ~/ p2 K1 v
7 o( w/ T% Z5 R- \4 ?) R! j% k' L: \/ ^3 |1 x, f
步骤 2. 运行
* q6 B& D- T+ R) X0 g: C
* Z7 a# D* i' Z/ [在命令行里进入文件所在的文件夹,例如:( F( @" n. z1 e7 i4 o
cd C:\Users\你的名字\Desktop7 ^4 z$ w' v c4 _1 w! n0 }
python baccarat_sim.py
6 ]6 U" S4 o3 @( |
) b3 l, O$ Q/ s) t( _+ U输出会显示:
( v5 s* C/ u3 N6 G
' C; K8 d, \% I/ R$ y5 i% S累计盈亏: xxx
* d. d+ Y$ @# _累计抽水: yyy
9 F. e1 ^, V' W0 f( z-------------------------------------
, x! ~+ y) R" h% q5 ~$ B5 p实例:试跑3次,
0 a _! d; K8 D/ K6 m% p- k( lC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
, V! \+ M4 b% x/ ]最终盈利: -5360.35 2 k, f5 C$ H5 c& n7 R
累计抽水: 5176.35 / R1 P# k9 p( ^$ g7 V# x+ e d
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
, u5 h0 _0 \' x# a最终盈利: -5661.65
- O2 A8 A. ]" i( J6 S, r累计抽水: 5174.65
: E) k) C2 M. m3 \& h; Q0 X: i& ~C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
: q. Y* U! H) J最终盈利: -4244.50 / Y4 L6 ]& c3 d( E
累计抽水: 5176.50, b2 L& U$ _0 k/ o
* K1 s- ]- F( W; @9 u
说明你的 Python 已经能正常跑模拟了。结果也很有参考性:
3 N w7 ?* Z, `1 J' F1 p: t( P7 v
5 j. t4 ?; c) z累计抽水固定在 ~5175 左右 → 这和你设置的「抽水开关 ON」一致,因为你每手下注金额相同(例如 8 单位),程序是按 Banker 抽 5% 计算的,所以长期下来,抽水会稳定在一个范围。2 k$ }% E2 E+ d* Z
+ |5 ] c7 Q6 x4 t) H) z+ F
最终盈利为负数(-5360、-5661、-4244)→ 这说明在 100,000 局的模拟中,哪怕加上和局不计,下注方向固定,数学期望依然是亏损。
! Z$ m$ M* h1 P% l+ r& }这条缆不能直接用,用了会输。必须改缆法,或改缆法并且改下注规则。
" i+ P- U" ?$ c7 |5 c! u- r人们喜欢举例盈利,有吸引或牛逼的效果。。。用亏损的例子,可以真实告诉你,道阻且长不容易。1 t- ]' @; i' I: G2 n( {/ v
但是别沮丧,办法总比困难多。只是,你自己悟的,是最好的。& h) w j3 H0 U& M
1 ]% @* D# T4 @! g4 V7 i4 Z
启发,,,可以变更缆法,改变庄闲比例,指定胜负路。。。。(待续) |
|