|
|
楼主 |
发表于 2025-10-31 11:15
|
显示全部楼层
本帖最后由 Banker 于 2025-10-31 11:17 编辑
2 h5 a. C7 P+ t" X. h6 {5 F6 s& U4 q9 ]
可用Excel,逐手模拟过程(但 Excel 跑不了 100000 靴,会非常卡)。! ?4 H6 T* }9 d1 q) d& L- D
Excel 更适合 直观小样本测试,Python 才能跑大样本,Python 可以试试N万-1亿靴,10亿靴,有没有没必要?你高兴就好。
) T5 |* ]/ c1 R. {2 ~6 J9 \7 L9 t' u4 h5 U( W7 R( O" R
在你电脑上运行 Python 模拟器 (版本3.0以上,若没有,在Python官网下载安装)
* _5 f, ]9 ]7 Q; m假设你已经安装了 Python 3.x(在命令行里输入 python --version 或 py --version 看看有没有)。
' k, }! a" I6 j. C5 @先写一个最基础的 百家乐投注策略模拟器(自己定义的规则)。$ B- Z% V% `. A% [! ? a
, s5 \! E; z' E( l1 X0 w8 K步骤 1. 新建一个 Python 文件
7 v/ D, S/ t5 M: N* G打开记事本(或 VSCode、Notepad++ 都行,我用记事本)
D/ \7 M* I8 _! e3 p6 O3 B6 S; Q把下面的代码复制进去。
2 e& l6 u( J( c& [" S保存成 baccarat_sim.py (注意后缀是 .py)。8 L0 ]" `4 [: ^
4 Y3 x, S1 I( b- y6 c3 U
import random
7 |5 |7 B( ]7 P S; yimport argparse
# l1 D3 k7 k$ F1 s; E: T' M- I8 p" s9 b; ?" u# I$ C4 X5 H# ]
# 初始化鞋子; l7 u* s& I1 e2 Q- Y8 S2 W
def init_shoe(decks=8):0 G$ d, l/ b6 H0 u4 v# |( a$ G
# 每副牌52张,8副共416张- Y. d5 f0 Z2 q; y! }2 X, Q
shoe = []# ^$ a# A7 x$ o
for _ in range(decks):
& A% A% L/ p/ m shoe += ['P'] * 24 + ['B'] * 24 + ['T'] * 4 # 简化:庄24, 闲24, 和4
# S' V+ h; S# `7 G! S h! e/ y random.shuffle(shoe)
3 S; w6 K, N z m: J7 J+ ~ return shoe
& D) d* \0 R& Q- s" H0 z: y% u
1 [& @5 |5 f% d1 L/ v' T9 I# 发一手
/ C4 H3 k! c( L! j; g/ ?! xdef deal_hand(shoe):
' O: ~$ j, E, U if len(shoe) < 6:, s+ o. M( f- z' _- D
shoe[:] = init_shoe()
/ P% R: Z; z9 A: o/ p5 m" m return shoe.pop()3 t' C7 A+ ~$ G* A8 S [
( i' i! p3 o5 `2 M+ O# 模拟下注法 A
! T6 y; C' P4 u+ H& u! x: Y( ^def simulate_strategy_A(num_shoes=1000, commission_on=True):- \% p Y# c2 x8 F
profit = 0
2 ^( D6 Q, D3 [" |+ L0 O commission_paid = 08 \$ S) @ u4 k7 H( d4 R
shoe = init_shoe()( t6 P& _- E' r
8 q/ [4 C. {) R
# 策略参数
( ?$ h( J7 a" \2 b5 a9 X sequence = [1, 2, 3, 5, 8, 13, 21] # 示例进级! o1 s/ s3 A3 a
stage = 0
" {: u/ T/ ?' j4 U2 H) \8 V target_side = "B" # 起手投注庄3 D1 D+ A! w& X y$ Y/ T
! { v; `9 A) F: H$ [) e+ p, B% j
while num_shoes > 0:( ^& e, [/ x S
result = deal_hand(shoe)
9 [$ p* J; H& i: k$ d2 z
# q2 H8 u, E4 ]2 M |3 U& M4 S if result == 'T': 0 f# U' F4 @0 g' C0 C8 g1 C/ g
# 遇到和,不输不赢,重投% m6 d5 B: ^; W9 y4 a
continue9 M+ P+ k( L, u# \
- X9 o: C9 n' s
bet = sequence[stage]4 v" V/ P2 ^9 C& c+ |1 W
0 g @2 y5 w, z/ c! v$ l0 j O if result == target_side:) v$ o; i! q/ p2 d& H
# 赢
6 k% h4 Q0 h! Q' t0 Q9 y: C win_amount = bet, B3 B+ B. }3 D" p+ x8 {
if target_side == "B" and commission_on:$ G, E0 [, H" _4 d2 a3 I" X
win_amount *= 0.95 # 庄赢扣5%抽水
, h: O% S* \5 R4 c i/ n) { commission_paid += bet * 0.05
: a& ?8 r/ x8 E4 e$ m; b# _% I profit += win_amount4 Q4 \" S! u% G6 M
stage = 0 # reset( p- Z+ H. f; \9 y9 |
target_side = "B" if target_side == "B" else "B" # 固定庄(A策略固定)) d n% j: x' a* ~+ N
else:8 F. z. m, Q$ ^% O; `& v
# 输
+ Y `% L& e$ E% j$ B/ O& A# O profit -= bet
6 Y( F& _1 ]' e$ P, z& e stage += 10 H$ ?% |4 b, E/ h3 m
if stage >= len(sequence):/ d3 u! C2 A3 x7 |5 m9 h6 I0 l% T! `
stage = 0 # 断缆reset. J1 B. r J6 }1 I1 N- `
num_shoes -= 1' Z) S: G1 Z" G" H5 K3 w |
' a1 z, e+ I2 N' m return profit, commission_paid
; V' n3 n6 d3 Q0 q
' A- Y3 y# F# H0 M# 设置命令行解析* y/ E; U$ V6 {7 _' d1 P0 ]- X+ M: _* r
def main():0 K3 ?% u: i! d: t k: K, C8 t( v& A
parser = argparse.ArgumentParser(description="Simulate Baccarat strategy with commission on/off.")5 `% z8 l+ c& A& w$ s& o
parser.add_argument('--commission', choices=['on', 'off'], default='on', help="Enable or disable commission on banker wins.")2 Z: M9 J# M P8 t) e
parser.add_argument('--shoes', type=int, default=1000, help="Number of shoes to simulate.")2 C: H L9 }0 h2 K! E @' V
: ]: S/ O) ?: e args = parser.parse_args()
6 b) R: [' X* v3 _# q + ?) W8 q6 z; b. {! r7 M
# 抽水开关:开启或关闭
: G7 X0 i. z% s& _8 V commission_on = args.commission == 'on'
4 t) _9 m5 d, }1 @ 2 c5 p: I' E3 F7 a) L- m
result, commission = simulate_strategy_A(num_shoes=args.shoes, commission_on=commission_on)% |" Y" ?% t! m a7 \, R
print(f"最终盈利: {result:.2f}")' p1 L2 a" Y2 h% }
print(f"累计抽水: {commission:.2f}")
4 C& s' k+ h( ~1 u2 G" \ n* Y4 f* F9 w3 a# h
if __name__ == "__main__":* E, E- B0 f5 w6 l3 b
main()% L7 f/ n8 y" R' d; f6 W
. n6 m Q8 }8 ?3 q1 t
$ v' j& z* D. ?# b步骤 2. 运行
0 [% z/ j! z; ~2 Y. r: S
) M& @ X4 }& T9 H* Q* ]+ L' L4 F在命令行里进入文件所在的文件夹,例如:
; @8 [2 `( [& I1 Vcd C:\Users\你的名字\Desktop: t/ f) J/ S+ _- ]
python baccarat_sim.py8 |" E# s3 e M( w& z, R* y
( f8 L" s* z9 y, g8 k9 ^, o- f- ]
输出会显示:
$ z; J0 b( h `' e3 u% k) \5 r \
累计盈亏: xxx
: | G+ N8 h# |6 _3 V [累计抽水: yyy1 u! p# L' ^4 {3 x2 r
-------------------------------------: M" j5 ~$ |/ k+ A5 e1 B3 p, t
实例:试跑3次, ! L7 O/ Z' e& o3 R9 d1 u
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
# R2 N" S5 Y$ V5 X0 D1 _( ]8 ]最终盈利: -5360.35 5 e4 A4 [% s8 w2 }
累计抽水: 5176.35 " K- e4 N9 @ J9 \$ X% D: B
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py , [( \5 D/ G2 M7 O5 i
最终盈利: -5661.65
* I# w i9 G- I累计抽水: 5174.65
8 f' w% z' P$ S. {- E' p1 z$ g/ y2 FC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py . ?% K$ e* s4 F% V% D
最终盈利: -4244.50
7 ~ F: N3 l, E, R0 ]7 e: X( u累计抽水: 5176.50
3 n( }8 ?. X5 H9 L% P+ `: g8 C1 K
$ q8 F+ k5 }8 I" |" p/ H' R说明你的 Python 已经能正常跑模拟了。结果也很有参考性:" M' ]: A" v* e: Q6 v2 w6 m
1 U. k1 J* O4 @, {3 W) g
累计抽水固定在 ~5175 左右 → 这和你设置的「抽水开关 ON」一致,因为你每手下注金额相同(例如 8 单位),程序是按 Banker 抽 5% 计算的,所以长期下来,抽水会稳定在一个范围。
% f* e' F& {! R/ K7 m0 F7 X) W+ P9 J" f" R6 R7 O
最终盈利为负数(-5360、-5661、-4244)→ 这说明在 100,000 局的模拟中,哪怕加上和局不计,下注方向固定,数学期望依然是亏损。
5 {' K' j/ \* f3 c. W( y' Y+ O/ U这条缆不能直接用,用了会输。必须改缆法,或改缆法并且改下注规则。
$ M, X o! f8 R- |! B人们喜欢举例盈利,有吸引或牛逼的效果。。。用亏损的例子,可以真实告诉你,道阻且长不容易。
3 z. \- C9 u2 j! u1 j0 _5 R但是别沮丧,办法总比困难多。只是,你自己悟的,是最好的。
: ]% N8 ~2 v" A: f+ s3 z
5 V* p l3 d# T8 X' C* v启发,,,可以变更缆法,改变庄闲比例,指定胜负路。。。。(待续) |
|