|
|
楼主 |
发表于 2025-10-31 11:15
|
显示全部楼层
本帖最后由 Banker 于 2025-10-31 11:17 编辑
- j/ K! S2 J9 i1 U" v! o% G
+ |' w! J! f3 p6 |. b3 }$ r可用Excel,逐手模拟过程(但 Excel 跑不了 100000 靴,会非常卡)。4 ?; M4 g$ ?) I6 C- Y3 m. e; g$ L
Excel 更适合 直观小样本测试,Python 才能跑大样本,Python 可以试试N万-1亿靴,10亿靴,有没有没必要?你高兴就好。0 Y$ R3 c( Q6 t q, i8 I# E# r
% \* C4 o# q# g/ N在你电脑上运行 Python 模拟器 (版本3.0以上,若没有,在Python官网下载安装)
9 S& U* d& h7 _/ o/ _% g假设你已经安装了 Python 3.x(在命令行里输入 python --version 或 py --version 看看有没有)。5 f3 }9 i# B# @! J+ r+ E
先写一个最基础的 百家乐投注策略模拟器(自己定义的规则)。4 W1 [8 d# }: p- K- d
% h C: X+ |6 V1 D3 \
步骤 1. 新建一个 Python 文件, s, b; D. a% R
打开记事本(或 VSCode、Notepad++ 都行,我用记事本), x; R7 t5 f! E- Q
把下面的代码复制进去。! q$ R' |2 m. e
保存成 baccarat_sim.py (注意后缀是 .py)。
$ G0 d8 x& r& K0 Z0 w M* [: o# V7 O' I6 }0 o, B
import random% D1 I2 @, C' M, M
import argparse
$ Y. { _1 `9 u6 S% q8 j; K) e. X
# 初始化鞋子
: r2 |. Q# f# V% q7 M2 Ydef init_shoe(decks=8):
# H& C9 E* H1 y6 V* l# r # 每副牌52张,8副共416张2 m8 M! O, {9 V) s0 l; h
shoe = []0 q) x. q" E, c# a' _: w1 f
for _ in range(decks):
! t3 N$ V; ?9 l) [6 x! Z N+ s shoe += ['P'] * 24 + ['B'] * 24 + ['T'] * 4 # 简化:庄24, 闲24, 和4: Z& N1 B1 y+ w7 Y: K
random.shuffle(shoe)
& N0 K& G" n4 S5 x# g) l return shoe
9 G& p6 | r6 N; s! V4 L" k% [9 p& }2 O4 ~/ S3 r
# 发一手
6 D. o" ^! ^+ s/ ?/ Vdef deal_hand(shoe):
% [ o7 P, O. b' y* w; G if len(shoe) < 6:( N2 c" C, `* ]& H0 C T% a# l
shoe[:] = init_shoe()
: I* m0 e1 a+ _! { W5 d return shoe.pop()* u7 Z# B# |/ V! S! R
- q- x+ _* V2 ?* l
# 模拟下注法 A
2 O4 G& e" q, N* u5 r( T6 X6 Z- cdef simulate_strategy_A(num_shoes=1000, commission_on=True):# F& R+ {1 B9 n$ h$ t
profit = 0/ }7 N; q! x! j( W
commission_paid = 0
" ^/ L% ^! `3 [4 J* M6 S shoe = init_shoe()% u5 |/ a2 G$ q3 t5 R; ]& ^; |; H
" r4 L" P. ]) p4 X' J # 策略参数
, [; G# J% `% ?" G. z; w6 s' w8 P, Y+ a sequence = [1, 2, 3, 5, 8, 13, 21] # 示例进级
! V/ T- j" F/ [/ r; ]% u& \ stage = 03 q3 P& [8 m6 D
target_side = "B" # 起手投注庄) @" @6 L+ o9 I# n M$ W
$ f5 `. K w- ?' _: |3 |
while num_shoes > 0:
5 }$ X' o8 d/ ?+ X4 ]6 Q- p result = deal_hand(shoe)' U8 j, x0 j- T' z
& [! K/ L+ Q8 c7 [
if result == 'T':
6 X# h8 m2 F7 z# t9 K6 }8 n # 遇到和,不输不赢,重投/ X w! ^, V) S# a+ R. e3 c
continue
4 [# _% T* v2 o& ^6 R" w# p
# @' t7 p5 Z3 E5 S5 A% H+ |5 y! h bet = sequence[stage]6 R( ?) [' v; s3 v9 a7 j
6 H6 @; I. @' \1 w0 j6 [' a, r, ?5 _: {
if result == target_side:- h# F$ x. B' t. V$ _. ~
# 赢
/ o. g2 N/ o* T* Y9 S win_amount = bet% o C; P1 I. y& X: V/ G
if target_side == "B" and commission_on:
& d! l6 y% z6 D2 L6 S& t win_amount *= 0.95 # 庄赢扣5%抽水
2 T% ~3 U a- u2 D9 |- o5 C( i commission_paid += bet * 0.05
3 p/ l$ k% Y- {) ]0 N3 ~8 L profit += win_amount& u- i% ]% O T8 E1 }
stage = 0 # reset
0 G4 F! p; {9 w& p+ g2 \' I target_side = "B" if target_side == "B" else "B" # 固定庄(A策略固定)
% o9 s) q) D [ else:( p! W5 \5 d" Y2 {* L
# 输7 S- ^' w% K# L8 K
profit -= bet3 H% s4 P* E+ ]- o6 _$ P
stage += 1
, F3 M y5 f9 J# b& i; u# Q if stage >= len(sequence):
! `* E( q! {9 X. b0 F4 Z, S# z K. ^ stage = 0 # 断缆reset
$ E( y8 W, X6 @3 o+ S& V |. G num_shoes -= 11 r% F& G5 M1 L6 _
9 W' A7 H7 w& r5 p1 T i" X
return profit, commission_paid" F% I: N+ }) r; z
! [" s0 k. s' [" Q- O- l
# 设置命令行解析
" m w# z0 c2 K/ rdef main():6 Q( o9 Q- [0 X \
parser = argparse.ArgumentParser(description="Simulate Baccarat strategy with commission on/off.")4 s* U$ O! ?. u; [* | |
parser.add_argument('--commission', choices=['on', 'off'], default='on', help="Enable or disable commission on banker wins."): u( q, U6 X+ G+ ~0 l) M1 ?3 z4 N
parser.add_argument('--shoes', type=int, default=1000, help="Number of shoes to simulate.")+ v% V: f, H, c& C" V @# D
3 {; v" p3 S7 W% W. A0 L& M- z
args = parser.parse_args()
3 e, t8 O2 B( p- z" T e) I4 M 2 |: H, ]/ @* M+ M
# 抽水开关:开启或关闭" v! @- [5 l7 k
commission_on = args.commission == 'on'
* c! y( T2 E! W2 I & {' {1 r( [2 r7 T9 e4 d% V) r
result, commission = simulate_strategy_A(num_shoes=args.shoes, commission_on=commission_on)
% \2 j1 F7 Y) Z/ G6 ]" ^$ W2 a# a print(f"最终盈利: {result:.2f}")! N* V: g3 _- y) L5 J: j3 h: L% q
print(f"累计抽水: {commission:.2f}")* ]$ T e% U0 t7 L( c
. j' |3 c6 [/ w) \
if __name__ == "__main__":& w5 _- X% V. f1 D, `2 z7 F
main()( l+ C) H! e7 I% I4 B7 Z: p3 r# v
6 k8 c8 g- J7 J/ \% e2 }/ P
5 h. D5 V4 N8 w) y9 N- ?. i步骤 2. 运行
% e$ h: s. z/ S! k8 m
! E" M2 J4 C$ M# z9 N5 F在命令行里进入文件所在的文件夹,例如:6 h+ B, J: Z% y
cd C:\Users\你的名字\Desktop2 b! \$ l1 M W: ^& r. S5 N- } B8 i* F
python baccarat_sim.py
4 M. a& d$ ]* s9 P9 c0 l- A2 P
& ]/ y# J+ S1 ]0 U5 `' T0 b: x输出会显示:
1 _" h j, O4 X. v0 E
* ]' R1 {2 {9 b1 }0 t6 A7 K5 ?' I6 o累计盈亏: xxx) J" X) E: F/ ^8 u+ O
累计抽水: yyy$ m! x' @- P2 b7 z+ i3 e
-------------------------------------& p9 e3 X# p ?& g2 _& q2 p
实例:试跑3次, % K5 L* ~6 L x$ E) k
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
/ P; q0 N6 w$ \! |( l! O) @* F* B; R最终盈利: -5360.35 " T0 q6 ]3 b% N
累计抽水: 5176.35 - N: i8 K" C/ A- w F
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
" v/ d4 W1 G1 p9 p* A, a3 I J/ J. K' [# [最终盈利: -5661.65 0 B- p, L' D2 D+ \
累计抽水: 5174.65
' M N7 N% e$ M4 A- A7 G F& QC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
3 ^5 h8 Q0 Y+ \: t% M8 y3 e! O3 ]最终盈利: -4244.50
& S+ z9 r2 G) k2 D累计抽水: 5176.50
* D7 k& ~8 D$ w6 K7 y. N) B
* V4 F+ P- w8 G$ [* S说明你的 Python 已经能正常跑模拟了。结果也很有参考性: ~% P8 F, B! B
& Y8 P$ n3 F2 ?3 h+ i累计抽水固定在 ~5175 左右 → 这和你设置的「抽水开关 ON」一致,因为你每手下注金额相同(例如 8 单位),程序是按 Banker 抽 5% 计算的,所以长期下来,抽水会稳定在一个范围。3 m/ e8 z, v8 z) P
1 m' y. l1 {: ]最终盈利为负数(-5360、-5661、-4244)→ 这说明在 100,000 局的模拟中,哪怕加上和局不计,下注方向固定,数学期望依然是亏损。" u1 e- p) `& F9 I5 r& p
这条缆不能直接用,用了会输。必须改缆法,或改缆法并且改下注规则。
! f3 B+ o# s5 t$ r人们喜欢举例盈利,有吸引或牛逼的效果。。。用亏损的例子,可以真实告诉你,道阻且长不容易。
. [* B! B' z! a1 T4 Q但是别沮丧,办法总比困难多。只是,你自己悟的,是最好的。- k7 _) c2 s( o# O$ z
, D0 h# \- O+ G! ?7 V$ F; `
启发,,,可以变更缆法,改变庄闲比例,指定胜负路。。。。(待续) |
|