|
|
楼主 |
发表于 2025-10-31 11:15
|
显示全部楼层
本帖最后由 Banker 于 2025-10-31 11:17 编辑 / O( P* v4 ~, K
; `+ q# F3 L- ]' @
可用Excel,逐手模拟过程(但 Excel 跑不了 100000 靴,会非常卡)。
( g" n9 b& R3 _1 v8 }; o/ UExcel 更适合 直观小样本测试,Python 才能跑大样本,Python 可以试试N万-1亿靴,10亿靴,有没有没必要?你高兴就好。* ^: H; r7 P' {
; n+ e9 Q0 s) l. Y$ y在你电脑上运行 Python 模拟器 (版本3.0以上,若没有,在Python官网下载安装)+ f/ ?8 D+ b8 y3 [+ ]4 c
假设你已经安装了 Python 3.x(在命令行里输入 python --version 或 py --version 看看有没有)。! O: {* t& X% H
先写一个最基础的 百家乐投注策略模拟器(自己定义的规则)。
; p2 P% S* D0 W0 u& x6 e
6 U' q( I( A0 [& C步骤 1. 新建一个 Python 文件- R3 _* Y' V$ r6 Z e, y3 p6 _0 j
打开记事本(或 VSCode、Notepad++ 都行,我用记事本)
! ]9 F7 f+ G; i0 x- q$ {( g把下面的代码复制进去。8 F. j6 `8 U+ q* ~- S0 M1 F1 m
保存成 baccarat_sim.py (注意后缀是 .py)。7 z$ [- |$ S) M9 {
* T# R% r& i1 L& @& i1 B, d3 {import random1 d4 S' O! n% N* n1 x) V! N
import argparse$ u3 N! P5 m p; w% i& b: c$ X
( L# j O" |3 S8 H+ V# 初始化鞋子
' E o$ [$ _! T% c" L8 R) ]- R9 `4 fdef init_shoe(decks=8):3 H- `$ Q f, T5 E2 L, K" L' m8 z
# 每副牌52张,8副共416张" S& g& ] R, p6 C/ [: n j
shoe = []
' ?: k ~2 I) \' b) B for _ in range(decks):
: S; u J, k% n1 h; H shoe += ['P'] * 24 + ['B'] * 24 + ['T'] * 4 # 简化:庄24, 闲24, 和4
# R% r( l* c- Q6 p1 H8 o6 e random.shuffle(shoe)
/ F) L3 G0 k$ L9 K7 t, c- a; F. Q return shoe6 \( O* Z, q/ S9 S
( c4 `1 P4 g7 @. U! r) w, H# 发一手% [# `" l# \- b9 c0 t3 j
def deal_hand(shoe):/ L3 u: k* j! Z" P4 \9 Q: b
if len(shoe) < 6:
3 K8 e4 W8 [ [- t0 O shoe[:] = init_shoe()
, r! Q+ E& k# S# h6 t' e return shoe.pop()! \$ L& m* l, ^
( E% j* K# G. Q! f) } ]) @7 j
# 模拟下注法 A! j1 t' _3 [/ x6 |/ h8 T
def simulate_strategy_A(num_shoes=1000, commission_on=True):
1 _7 n+ e5 j) a7 G profit = 0
- A6 y! q, H7 x- {' C commission_paid = 0
9 x! s6 A* p( h" Y# ? shoe = init_shoe()
! T9 R, E3 w$ S" V6 N - N) S$ C; ~7 W( z& @* J
# 策略参数
3 f+ d1 K) ^6 Y( `, f, ? sequence = [1, 2, 3, 5, 8, 13, 21] # 示例进级+ t8 k& a* t) ?
stage = 0
7 A Z/ R$ h- p* c3 F target_side = "B" # 起手投注庄3 z7 i( P9 B' V2 `* @
8 w% X0 Q6 j8 ]2 z* [: X while num_shoes > 0:
) G' c7 Y9 S8 i% I/ k0 V- p* x result = deal_hand(shoe)
+ t- C* |/ ?; H b. X
' s) X6 E5 A9 r if result == 'T':
* ^ H/ u: L" q& ~2 C1 h # 遇到和,不输不赢,重投
& f& U, u4 G. f# P- `2 | continue# K! w7 ^ G* c4 t
& H+ q& ^) P4 @* B$ n bet = sequence[stage]
i7 E9 ]7 D% b5 {" L2 {8 B# t e/ l5 Y1 m9 x% y
if result == target_side:
0 h- Y) z0 L; m& a2 B6 C # 赢8 U; u( Y1 \' a |+ c
win_amount = bet( {# g; I2 y1 W, `
if target_side == "B" and commission_on:; D3 v% ?0 W0 v. U
win_amount *= 0.95 # 庄赢扣5%抽水
2 `* f- n- ~- M& _; j, P! f8 i/ g commission_paid += bet * 0.05+ I* @: t) C6 y3 t" ]
profit += win_amount! f" w2 K1 Y/ k0 I! _/ ]
stage = 0 # reset
4 P5 H* V9 ]) W+ t target_side = "B" if target_side == "B" else "B" # 固定庄(A策略固定)
+ _2 O. I3 n( O4 G2 Q# ^ else:" p; t- f% Y# l) r
# 输8 Z) ]) Z) Y$ J! R! \: y: g( Q. X
profit -= bet$ [9 p: r7 T* z" [) e
stage += 1, S3 g' \4 C5 A6 H( H
if stage >= len(sequence):
P9 R$ b& ?9 m/ G stage = 0 # 断缆reset% I1 C: P9 w7 f ?
num_shoes -= 1
- p2 X6 _% p% a( N$ M7 a6 }
X" o8 L' i% S+ L( u7 M3 W9 Q return profit, commission_paid
. x, _" _0 i$ u1 B
6 D# h9 E- J4 q% ]: B- M# 设置命令行解析
$ H* y) M* a" r. x! q: M3 M. T% Odef main():
+ B( J5 o& E6 U0 v: k e parser = argparse.ArgumentParser(description="Simulate Baccarat strategy with commission on/off.")
3 g! {( F R, p+ k3 t" M8 x parser.add_argument('--commission', choices=['on', 'off'], default='on', help="Enable or disable commission on banker wins.")
% ~# p: b2 a" N0 J6 | parser.add_argument('--shoes', type=int, default=1000, help="Number of shoes to simulate.")
9 Q3 H$ d7 G5 `4 o$ \' Y , M/ C2 X; `3 X, w) m
args = parser.parse_args()! ^' b/ u7 s% d8 `% H/ J
! c9 o0 T g2 P # 抽水开关:开启或关闭# T+ D I- K+ K- @7 M
commission_on = args.commission == 'on'4 n; h/ H( p- ~0 C0 Q7 \2 q
. Q! ^3 M4 A0 j% i L result, commission = simulate_strategy_A(num_shoes=args.shoes, commission_on=commission_on); ?$ [( @) `. V& j' x+ g: g8 v& o
print(f"最终盈利: {result:.2f}")
. x- G7 p) S5 o8 J$ a- k print(f"累计抽水: {commission:.2f}")5 X" V+ N! r' i1 _
! k7 p, k( _) o! \& Y, c5 gif __name__ == "__main__":! a7 r7 ^, h: L* p6 y9 Y
main()
! X2 S2 ?1 ]8 i: o# Y
& J& r: I6 x, Q' p
5 N* U7 C5 f. a5 Z+ q+ f& P0 c步骤 2. 运行
; O3 P$ d9 Q3 K7 [+ y6 F5 X
% j9 f( z0 G. X- c在命令行里进入文件所在的文件夹,例如:
& N# L6 _$ ?7 v' E% h! M; z4 @0 x! M3 Gcd C:\Users\你的名字\Desktop
; c4 Z# a0 B* L8 O3 v9 Z9 Jpython baccarat_sim.py! x& Z; h. x9 V7 J5 I
9 N+ v& k. D [( t* p4 n4 u输出会显示:2 E5 z, V* h' O; }% Z
3 S/ P3 _4 {' }8 O9 R9 g
累计盈亏: xxx$ X- W% Z* K% ?6 u4 M( X
累计抽水: yyy
) \/ D! D+ |, R. ?6 k; r. K1 }-------------------------------------
; a8 S2 b4 s$ O实例:试跑3次,
7 j6 d0 c* E: g0 z# P8 R& h+ g. gC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
5 v* {$ I" R4 G. a最终盈利: -5360.35
7 Z, ^" Z( h, w! E8 A" {/ a6 y累计抽水: 5176.35 " o. u* _3 l( f8 p
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
/ U! y2 Z; \3 [1 U最终盈利: -5661.65
0 q/ k8 I5 e8 Z4 }/ s' s# d累计抽水: 5174.65
0 k0 O% O; l& j. j6 _! LC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py ) Q X( F4 q, l6 y- P
最终盈利: -4244.50
+ E0 _, a; f8 j" J5 x& v, N累计抽水: 5176.50! f, O) I3 L/ b
, i# @$ ^( a5 D: W/ h8 G x
说明你的 Python 已经能正常跑模拟了。结果也很有参考性:
- g4 K9 s8 W; }' t
% r6 o$ e% N T$ W5 Z. F% _( u累计抽水固定在 ~5175 左右 → 这和你设置的「抽水开关 ON」一致,因为你每手下注金额相同(例如 8 单位),程序是按 Banker 抽 5% 计算的,所以长期下来,抽水会稳定在一个范围。 g! I5 G$ {9 ]* n e
' \4 j) S9 k. e2 g( v1 ^
最终盈利为负数(-5360、-5661、-4244)→ 这说明在 100,000 局的模拟中,哪怕加上和局不计,下注方向固定,数学期望依然是亏损。
( t4 b: t8 h8 J2 `* `% l1 e0 E: O这条缆不能直接用,用了会输。必须改缆法,或改缆法并且改下注规则。7 g! A- U. N9 m& P) x* c
人们喜欢举例盈利,有吸引或牛逼的效果。。。用亏损的例子,可以真实告诉你,道阻且长不容易。 `. k" E9 ], \ D; G
但是别沮丧,办法总比困难多。只是,你自己悟的,是最好的。
; W( b2 N' N% M/ t; F# {! `0 p& R* F$ m( c/ f B4 V' `+ Z8 E( d1 A
启发,,,可以变更缆法,改变庄闲比例,指定胜负路。。。。(待续) |
|