|
|
楼主 |
发表于 2025-10-31 11:15
|
显示全部楼层
本帖最后由 Banker 于 2025-10-31 11:17 编辑
n0 W+ c( \4 B' `5 l! b6 o3 h5 V8 Z
可用Excel,逐手模拟过程(但 Excel 跑不了 100000 靴,会非常卡)。. }, N' y, G- }3 q- `; f- C
Excel 更适合 直观小样本测试,Python 才能跑大样本,Python 可以试试N万-1亿靴,10亿靴,有没有没必要?你高兴就好。
" A" b( \ f2 p% B
' f( ^7 r/ }3 R2 I在你电脑上运行 Python 模拟器 (版本3.0以上,若没有,在Python官网下载安装)
7 @6 f" p# d6 \8 y) r% f; k, D" A假设你已经安装了 Python 3.x(在命令行里输入 python --version 或 py --version 看看有没有)。
* y; | q$ Z. g5 }# t1 ^先写一个最基础的 百家乐投注策略模拟器(自己定义的规则)。- Q7 H1 A2 a% e1 y: L8 m5 u
) l6 ^; j E1 F/ S9 ~! k1 f( j步骤 1. 新建一个 Python 文件
$ I' k& o& ^( K" N# i8 W2 ^7 G打开记事本(或 VSCode、Notepad++ 都行,我用记事本)# x. y5 _# z! K. Z# s$ W/ A) F
把下面的代码复制进去。
2 p4 T4 O* ]4 x- |" A7 T保存成 baccarat_sim.py (注意后缀是 .py)。8 h" ^0 N) `) ]) m
' ~$ T' m& o$ K. q; r/ U
import random0 y5 {: e) n7 m' O
import argparse: }* n* e7 t4 F( t- Z
+ h o2 O/ s, |+ G/ g i# 初始化鞋子
( b m1 K* m/ h0 o* hdef init_shoe(decks=8):2 g/ T: y! Y$ z" H
# 每副牌52张,8副共416张
# J/ E8 O' u3 R! Q7 x shoe = []0 w, R- v2 E6 r( y$ j' e; O
for _ in range(decks):
$ `4 h' D$ _7 {8 ^4 A$ E shoe += ['P'] * 24 + ['B'] * 24 + ['T'] * 4 # 简化:庄24, 闲24, 和44 T; @" N9 S( W7 E
random.shuffle(shoe)8 G+ W: Y. |2 o- a4 ?# a
return shoe
0 x9 C' e8 W- i& w
: b& y9 B' |% z1 a3 x# 发一手, P: k$ f/ R7 E' E) S# v
def deal_hand(shoe):6 z6 _" ?2 k* Q" d5 ~ O1 i9 O9 S
if len(shoe) < 6:
1 p; w$ ]+ B, }7 Y: g8 {* ]+ O shoe[:] = init_shoe()& Y- x, N# {; [( f+ ?" b
return shoe.pop()
+ d# H' P% v2 f+ N+ J$ L
, N" W: a$ r1 l5 N7 ]# 模拟下注法 A
5 Q3 `! n* o; J1 o( p ]1 _& \" Wdef simulate_strategy_A(num_shoes=1000, commission_on=True):
0 x5 \9 l2 R6 j1 R6 O: g" A profit = 0. O- G" b3 ^( D; j7 k
commission_paid = 00 O/ c) a P. ]8 Z" E6 [' _# \& J
shoe = init_shoe()3 P; z) ^0 x0 W* n, K& @8 F
9 c) }* ^/ E4 E& s: N6 u- n' D # 策略参数
- H" j, q- Q n3 B1 R sequence = [1, 2, 3, 5, 8, 13, 21] # 示例进级1 Z6 |& u0 d( ~9 {5 z9 ?1 L" `3 ^
stage = 0
! n: o- p" n: z2 b+ x target_side = "B" # 起手投注庄
8 h7 W, Y3 |9 W, Y: h" K* u$ t4 V7 |9 p# f- a0 b. \
while num_shoes > 0:0 i. [3 y; m+ Z! Y/ u- \1 C# r& Y% r& o* W
result = deal_hand(shoe)
' e" r% [0 h' @! i8 a) V8 I9 _7 ^$ Y3 d3 V* I
if result == 'T': # j3 I* x1 C8 l, r: s. V
# 遇到和,不输不赢,重投
$ c- u# N# y( D continue. Y3 U/ Q, A! ?- {. M& e
, S& q) v. s# s9 L- K: k
bet = sequence[stage]8 K* I' J/ Z8 R5 V5 L+ {" w
+ g" w9 f$ ?$ P( i/ A; h
if result == target_side:
; W, S6 ~4 d+ n # 赢
: Z, b) @$ p" M C, w5 m win_amount = bet
3 n. h/ S" f/ M- h( a0 o. {; f if target_side == "B" and commission_on:
0 H3 T) T; I2 [$ q4 f: k. |$ q, t win_amount *= 0.95 # 庄赢扣5%抽水
, m7 M( I; M" I* X2 O commission_paid += bet * 0.05
4 {8 ?" b! C+ E. {2 Q% B, d" d profit += win_amount4 l( _7 |1 j: L9 a& q2 i2 K, U
stage = 0 # reset
$ x: A0 _0 \: T3 ? target_side = "B" if target_side == "B" else "B" # 固定庄(A策略固定)
/ L. r) \ k2 L/ S9 b else:7 m- P4 o* ^/ j5 p% Y; z
# 输% r$ ~$ a6 S9 |, Z2 k \7 G
profit -= bet
( Y: y" b# A! _ stage += 1( H9 j; ]& v) t1 M# Q3 {# \
if stage >= len(sequence):
4 P( K& O+ g" }! E( h- b; U stage = 0 # 断缆reset Y) r, A7 M4 Q9 \, c0 [
num_shoes -= 1
7 p+ }* m9 T) i
5 X/ K4 i) C& d' k% }$ ^# J- r return profit, commission_paid+ l5 S: v1 _2 w
H: `: P" }! v8 m: A) ]- h, A
# 设置命令行解析3 N8 y3 I6 r% P0 W2 \2 h- n
def main():
8 @2 d' c( b" s" h; W7 r2 F7 o parser = argparse.ArgumentParser(description="Simulate Baccarat strategy with commission on/off.")
5 V# t$ P+ g% p$ r6 {$ p' F' ^ parser.add_argument('--commission', choices=['on', 'off'], default='on', help="Enable or disable commission on banker wins.")
! }: w5 `, v! ]' D. j0 \' x0 e parser.add_argument('--shoes', type=int, default=1000, help="Number of shoes to simulate.")
1 X) {; o8 u$ m" [- N% R
! d: c+ J1 \9 R( y4 k k5 k/ j args = parser.parse_args()
$ M! T/ u' i1 m3 {4 `. o 9 Y5 ]3 I4 M7 _
# 抽水开关:开启或关闭
' q6 x: _8 E9 I" Q b0 Q& i* ]6 n commission_on = args.commission == 'on'
+ I3 m7 h/ E+ Y; N6 S9 N . C8 i$ S2 C! l
result, commission = simulate_strategy_A(num_shoes=args.shoes, commission_on=commission_on)
0 N; U3 W( g5 j/ M/ x print(f"最终盈利: {result:.2f}"): M% y' x; X* I! J& `2 x' p: K* U# [
print(f"累计抽水: {commission:.2f}")7 q9 e4 z/ q+ }4 t8 j$ ^
6 v8 ]3 \* v* e* L7 _1 |8 Z
if __name__ == "__main__":+ M3 q3 d6 D9 h; |% ~9 l: k
main()1 C( U; `+ k' H3 Y l
1 e' c; H2 y+ J: {% x; ^: |
# W% a: G& n; c& p
步骤 2. 运行
- K8 ^9 F q1 A& L1 ^+ w9 f5 |& s1 T- U/ L2 a
在命令行里进入文件所在的文件夹,例如:' x' Z$ c# G& s9 |
cd C:\Users\你的名字\Desktop
7 n. x$ V9 x! Kpython baccarat_sim.py3 a; w: z3 {; C2 z/ O. l7 m
9 m" G/ v1 _4 l+ N7 f输出会显示:
; X- Q) U# [( _/ [
" t$ k5 m8 r9 q7 k) [ l累计盈亏: xxx
' t, i: z B2 X* s) @累计抽水: yyy
4 X, \7 H3 T( F; n& y7 W-------------------------------------, F) t0 b' B8 v% o
实例:试跑3次, 1 o3 J" @% \! z5 z1 q' d
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py - ~# H2 ~" f% p+ b3 A, W* n
最终盈利: -5360.35 , O0 C8 G- r0 N: Y6 C/ |
累计抽水: 5176.35
+ }1 l! O1 g! N# LC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
- Z, F( l& K* f最终盈利: -5661.65 * C! Y7 Z v x# x4 I
累计抽水: 5174.65
+ F9 \+ b6 h8 B5 ^$ O nC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
6 C. i+ ?& ]3 b9 j% I1 a4 h最终盈利: -4244.50
. d0 ~# J/ s; F! V! S7 N: v累计抽水: 5176.50
7 }9 e$ r; J L+ N V; j% U3 k4 s2 p) o' X/ U9 q O$ y. s
说明你的 Python 已经能正常跑模拟了。结果也很有参考性:# J& l; B% o. b P- @, J
0 d+ n$ S: l- r累计抽水固定在 ~5175 左右 → 这和你设置的「抽水开关 ON」一致,因为你每手下注金额相同(例如 8 单位),程序是按 Banker 抽 5% 计算的,所以长期下来,抽水会稳定在一个范围。
- p1 m- I9 J" _9 {
; e; \6 X- z5 V2 a* {; Q! c最终盈利为负数(-5360、-5661、-4244)→ 这说明在 100,000 局的模拟中,哪怕加上和局不计,下注方向固定,数学期望依然是亏损。6 D9 c* h, }' ~8 v9 [% E
这条缆不能直接用,用了会输。必须改缆法,或改缆法并且改下注规则。1 J8 Q' `* p; d& o/ x' f
人们喜欢举例盈利,有吸引或牛逼的效果。。。用亏损的例子,可以真实告诉你,道阻且长不容易。$ \$ r( O ^5 {/ {! |* K8 _
但是别沮丧,办法总比困难多。只是,你自己悟的,是最好的。
$ d. |; X& A7 l( R8 f
5 d) t+ Y# v0 F- r, z. |2 x# ?启发,,,可以变更缆法,改变庄闲比例,指定胜负路。。。。(待续) |
|