|
|
楼主 |
发表于 2025-10-31 11:15
|
显示全部楼层
本帖最后由 Banker 于 2025-10-31 11:17 编辑 # O1 U2 v* k' ? o8 x% X
z% [- @5 r& ~7 ~: T可用Excel,逐手模拟过程(但 Excel 跑不了 100000 靴,会非常卡)。
3 A% [( q* M7 Z* n' hExcel 更适合 直观小样本测试,Python 才能跑大样本,Python 可以试试N万-1亿靴,10亿靴,有没有没必要?你高兴就好。' y) B) Q0 f' Z7 a+ U4 ?1 }, J" o
: y" o5 y" X' V8 ?5 b在你电脑上运行 Python 模拟器 (版本3.0以上,若没有,在Python官网下载安装)' E1 Q* F; Y" t/ D
假设你已经安装了 Python 3.x(在命令行里输入 python --version 或 py --version 看看有没有)。6 V8 t. w, ^! A- J2 O/ W
先写一个最基础的 百家乐投注策略模拟器(自己定义的规则)。8 n' u: r! y& K. T& ~; {# H; D
3 |# g. G- B, V$ e- \( ]步骤 1. 新建一个 Python 文件% `- Q3 X0 L4 ^! V m
打开记事本(或 VSCode、Notepad++ 都行,我用记事本)
, f+ n7 I9 c; c) E( m2 \2 ]' E& K1 f把下面的代码复制进去。5 V2 X, U2 M2 ^1 I$ k$ F4 v+ H5 D
保存成 baccarat_sim.py (注意后缀是 .py)。2 I6 J. ? U2 n
6 g* g; n, K- l$ Y# d1 b- Y
import random) t- x0 w# M3 {" n
import argparse
) U. ?" w; \5 p1 y! {- s
: P1 Q& h8 }+ C- |; {" z) `/ n# 初始化鞋子0 V+ N5 W$ f: Q0 _& u$ ~
def init_shoe(decks=8):8 [ P. o) Y/ k E" g3 \$ [$ c+ z! ~
# 每副牌52张,8副共416张
* m+ g4 ^: j( W, K! I( P; t+ T shoe = []
6 g' }. I1 W2 s, \3 C for _ in range(decks):
6 l& ]; P( E9 T; ^0 V. g# f# U! _ shoe += ['P'] * 24 + ['B'] * 24 + ['T'] * 4 # 简化:庄24, 闲24, 和4 c4 F5 R2 N! l5 B" ~
random.shuffle(shoe)
8 l; o! y, K% I e/ w* A: ]7 x return shoe
! i* t' @5 k: ~; k0 u. l1 f
: e- p8 Q6 W1 X; T9 D9 w- f: e, c# 发一手
7 ?% R a4 _) b( a( f. E Xdef deal_hand(shoe):( i. L$ Q( g. \0 Q, q
if len(shoe) < 6:# ]# \3 L2 ` U; Y3 `# S
shoe[:] = init_shoe()
5 a! ^( Y9 D5 D3 j H; g' z return shoe.pop()3 x! e+ w0 l. P3 E6 _
0 u# \9 E3 s& o/ w6 _# 模拟下注法 A, c+ O1 E% W; U; O( h
def simulate_strategy_A(num_shoes=1000, commission_on=True):
% C: d* f. Y& @ profit = 0" i; Q9 T/ z9 ^ M" _
commission_paid = 0
6 O& R. z% V# M/ N, ^" `6 S shoe = init_shoe()
8 ~/ M. e2 K; ^ Q/ s
2 ^ {! i, L' g5 L# w/ P, ~ # 策略参数: H2 W% A( w, T W% v% U+ p7 M/ X
sequence = [1, 2, 3, 5, 8, 13, 21] # 示例进级/ g4 I+ a8 K: F6 U1 [. l
stage = 0
$ M$ \6 D3 I5 Q, h# u; ] target_side = "B" # 起手投注庄
. p) T0 M+ K6 m# T& D) M
) i& ]# t% {0 z% \9 p" Z0 P5 ` while num_shoes > 0:* H! q. L& b, l% @' h e
result = deal_hand(shoe)
1 [' T# f3 Y) L' k& {, n n. |. L, r: x" a: _/ m1 C; t1 _+ W1 H
if result == 'T': 4 h% ]* f! m8 r( O6 K" d m0 |
# 遇到和,不输不赢,重投4 v" `1 b( c i: s9 i! ?
continue
% }6 e4 l; p+ h% N- o8 ^& _ {/ L1 Z L: S
bet = sequence[stage]
. _9 M Q: W# P' o5 I3 r+ q - ]4 B4 U# z4 A
if result == target_side:
' l: w4 L! p# ^" U! Z # 赢
6 m4 \) Y" u9 [2 R' f win_amount = bet1 R r2 s- Z Y! i8 u
if target_side == "B" and commission_on:
$ v+ @0 L& r( ]7 b3 j6 M# d win_amount *= 0.95 # 庄赢扣5%抽水3 n( W! P/ E( p
commission_paid += bet * 0.05- b, l7 c* \# M
profit += win_amount
% t7 L3 l& z5 z" L stage = 0 # reset1 ~8 S! ~7 a3 s( Z
target_side = "B" if target_side == "B" else "B" # 固定庄(A策略固定)
$ `* `) A8 W3 B6 b& z1 H5 N3 b& d else:/ b+ r* q: Z( ] N6 l
# 输
/ {. l B6 F: S4 p: B profit -= bet
. H& g5 v6 V( D; o, \2 A stage += 1
, ?4 T$ K6 a8 _4 x3 b if stage >= len(sequence):
; d2 w* L* i4 w! g+ [) \8 a stage = 0 # 断缆reset& S B% e, D4 z
num_shoes -= 14 ~. T7 g; l6 K3 k. m( t3 _7 w# g- p
- d3 e1 |, x: { E2 w5 ?
return profit, commission_paid2 M- _0 [8 ^, S( T+ { j3 |7 b
# m( d( \( t$ ?0 M
# 设置命令行解析$ q% v9 ?: w/ [: \& K( [+ a, `0 j
def main():
! |4 u4 [' {) i# B3 O8 _ parser = argparse.ArgumentParser(description="Simulate Baccarat strategy with commission on/off."). ^) T' u5 \( B3 C3 l7 |
parser.add_argument('--commission', choices=['on', 'off'], default='on', help="Enable or disable commission on banker wins.")
! m; }- {+ l# ~6 D1 c' Q3 W2 _; ~, i S parser.add_argument('--shoes', type=int, default=1000, help="Number of shoes to simulate.")
3 o: ~: g/ N% \; U$ r3 s3 L, z $ M# g. L) W8 `# V }) }. r
args = parser.parse_args()
1 n7 A+ V a/ e/ {7 f" o; _
* L2 A4 o8 {$ G! [$ S # 抽水开关:开启或关闭
$ R3 f; L- A8 ?7 R' y, `" ?( l! r commission_on = args.commission == 'on'
" I6 [' Z, R) B, v& m+ t
( L% w& t+ F8 Y7 u result, commission = simulate_strategy_A(num_shoes=args.shoes, commission_on=commission_on)
+ A/ H6 W2 S5 `% _ print(f"最终盈利: {result:.2f}")+ A- k5 A% n' \1 ` x$ J6 S2 \
print(f"累计抽水: {commission:.2f}")
0 c6 c: b$ O/ d8 @2 p+ h. r: E6 o9 O5 _! o* }+ i7 O
if __name__ == "__main__":' B+ @2 n# E& l- g* M
main()6 g0 N! A. o2 G; p4 C1 S! u
9 R! ]' n0 y0 U* C, N" ^) Q: ?0 I
, x% ]0 L; O7 K* T步骤 2. 运行
0 ]# m9 M. S/ }: F" C2 s; s. A! o; W. z/ N) h2 {
在命令行里进入文件所在的文件夹,例如:
6 e( t" `, g% y) p: t/ }cd C:\Users\你的名字\Desktop- X2 {; r0 o/ C& `* ~
python baccarat_sim.py* g- X3 Q7 h! T. F! L* N
?. X6 _7 ]! {% b, d& V! e
输出会显示:$ w0 }0 d' p# Q8 a
/ T2 D- |% m9 B+ p% V
累计盈亏: xxx
: j t' O& u5 v3 A; f% I累计抽水: yyy' I$ @; S" j k- E& p- q/ a8 U
-------------------------------------( {: r: R8 G: q9 Q& r1 M9 I% U
实例:试跑3次,
& ^; a: t% C& M) \7 H% DC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py 4 Q! X1 o0 j9 ~3 ?) b- _( ~) e
最终盈利: -5360.35 1 B V& m& M" W/ j
累计抽水: 5176.35
% x, ~* [; X% q: ~+ z) [C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py + v! O% @9 d$ j9 q
最终盈利: -5661.65 ( ^1 V( n* ^) x' O* S' j2 B8 t
累计抽水: 5174.65 . H6 P/ E5 A8 b2 p, ]8 z; V; T) ~
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
8 Q# ~4 w4 W; n( B最终盈利: -4244.50
$ l2 F! c) x! @4 ?! i$ P累计抽水: 5176.50
' s) f y! g6 }% s! [' A
7 l3 {0 ]3 T0 @( v2 y# `8 k说明你的 Python 已经能正常跑模拟了。结果也很有参考性:
( B, `- s# s. @' c. e1 {" d6 A f
1 V% V+ j0 S! I- e" e. P1 p& H累计抽水固定在 ~5175 左右 → 这和你设置的「抽水开关 ON」一致,因为你每手下注金额相同(例如 8 单位),程序是按 Banker 抽 5% 计算的,所以长期下来,抽水会稳定在一个范围。
' P+ b' c$ `( O( D& E
/ x8 G1 p! _% W, j# E) V最终盈利为负数(-5360、-5661、-4244)→ 这说明在 100,000 局的模拟中,哪怕加上和局不计,下注方向固定,数学期望依然是亏损。
" w4 }4 F. {2 b7 n3 s0 ]这条缆不能直接用,用了会输。必须改缆法,或改缆法并且改下注规则。! P. p2 Q M9 o: X
人们喜欢举例盈利,有吸引或牛逼的效果。。。用亏损的例子,可以真实告诉你,道阻且长不容易。6 W5 j" I% J4 _! M3 s
但是别沮丧,办法总比困难多。只是,你自己悟的,是最好的。
9 ~: d' P' [3 o6 {9 s& C
3 n9 b. k! {6 y* E启发,,,可以变更缆法,改变庄闲比例,指定胜负路。。。。(待续) |
|