|
|
楼主 |
发表于 2025-10-31 11:15
|
显示全部楼层
本帖最后由 Banker 于 2025-10-31 11:17 编辑
. x1 b( g& \3 J# p" |# p7 P, f; h n' _7 @' a, D
可用Excel,逐手模拟过程(但 Excel 跑不了 100000 靴,会非常卡)。1 D. r4 v( h. K R
Excel 更适合 直观小样本测试,Python 才能跑大样本,Python 可以试试N万-1亿靴,10亿靴,有没有没必要?你高兴就好。
+ R" U7 B) f- O: _4 {
4 n; D2 \7 z+ [5 E, b在你电脑上运行 Python 模拟器 (版本3.0以上,若没有,在Python官网下载安装)
% g1 }4 W* y, H5 m/ U假设你已经安装了 Python 3.x(在命令行里输入 python --version 或 py --version 看看有没有)。
/ K: ]3 n! X7 h, D, C先写一个最基础的 百家乐投注策略模拟器(自己定义的规则)。& f1 r- Z2 z. ?0 {
+ v3 H4 b o* Y9 M: ]: m
步骤 1. 新建一个 Python 文件, r4 ?0 Q9 `2 ~) }* }8 S! g! J2 N
打开记事本(或 VSCode、Notepad++ 都行,我用记事本)
; Z7 s+ [% U8 u9 d5 V) s( r! a把下面的代码复制进去。
$ D' G5 r6 P7 f; g- i$ S- O保存成 baccarat_sim.py (注意后缀是 .py)。
( u. z. N$ T- ]
. S' w! T& {+ d( L+ i! l" ]import random" z% x. k2 Y; e3 ^
import argparse
9 {/ B3 M- B5 \4 M: b- m1 M: k
# I2 y. Z- t0 ]! P& w$ I: D# 初始化鞋子
! N3 X$ m; p7 I. E4 z3 u, L; R. kdef init_shoe(decks=8):# N9 k: E8 X" P0 l( l( w7 G3 N! L3 j
# 每副牌52张,8副共416张
1 R' w. `* |2 X* ^3 a) @( r shoe = []7 ?0 \4 B' |! ^8 i2 x
for _ in range(decks):
+ p) t6 i( D4 \$ [, Y shoe += ['P'] * 24 + ['B'] * 24 + ['T'] * 4 # 简化:庄24, 闲24, 和4# V2 Y! h1 X7 Z6 H
random.shuffle(shoe)0 y9 ^4 m/ R$ \" c1 g; z( m
return shoe
9 k' U) B" Q: K
7 c; t* W9 x. J' y( D# 发一手
7 K- k( }0 ]# w9 Sdef deal_hand(shoe):
( K! t. n: |9 @6 q1 n+ R* i1 h if len(shoe) < 6:8 D; \7 @: v) [3 U; i
shoe[:] = init_shoe()
0 O0 B3 b6 _4 K! b% Q& i4 o/ [ return shoe.pop()
& `) i& F4 m% k1 }
! G. r f) |6 q) k# 模拟下注法 A( m) B5 F; P9 ]! Q' ?2 v. }
def simulate_strategy_A(num_shoes=1000, commission_on=True):
4 a0 f: I% ?, U) V. M profit = 0
; G; V1 m* S( X9 w! ~" `9 D Z" K3 U: ^ commission_paid = 0
$ H- y! S1 ~* h+ \ shoe = init_shoe()
7 L+ V; R9 H1 [5 q3 c: {
1 R, k |1 C" X6 Y" G3 T, B% E # 策略参数! v$ `* o' j6 M3 T
sequence = [1, 2, 3, 5, 8, 13, 21] # 示例进级# B0 Y: t0 ^' w( D! T
stage = 0
4 h3 a: K1 {8 O6 c target_side = "B" # 起手投注庄
/ j {. z* {& O: j& H9 T) \5 Q4 t/ D) x
while num_shoes > 0:: B3 x7 y+ G5 U
result = deal_hand(shoe)$ C' w/ O! U! a. E* i; t
' _. k9 K% ? H2 O# p if result == 'T': 8 O, i o4 D7 f% g" T
# 遇到和,不输不赢,重投
' H$ G M. l/ \, F9 d0 ~, E e+ U continue
$ h- m9 F! G6 U
$ p9 i) j) |% A, N! n bet = sequence[stage]
* F; S9 n% r* C
, Z$ v9 I, ]* l8 x3 m if result == target_side:
- k- @ J3 |0 }5 Z0 ^2 p! \! f # 赢
1 j9 u$ y+ {4 l; k2 j win_amount = bet# i- {9 E5 ` X
if target_side == "B" and commission_on:8 Y6 m: M+ P. X" F! p7 c8 v
win_amount *= 0.95 # 庄赢扣5%抽水
: ]( Z% t/ j, w3 f! @0 l/ s commission_paid += bet * 0.05, @- s. s0 S) t5 a6 R6 W
profit += win_amount* f1 F w' e3 A/ l* _# X2 C
stage = 0 # reset1 J0 r/ U( z5 _. Q1 S
target_side = "B" if target_side == "B" else "B" # 固定庄(A策略固定)
: v U0 s, X, G O" U else:% A% X& v" Q# K. D
# 输& H3 o) } w/ S) j& `# U" A
profit -= bet2 ~& p# i/ _, ]- u/ N7 [8 [
stage += 1: o( I4 M; v. W- v0 I6 h; Y
if stage >= len(sequence):
4 O4 j. O) H/ [; P9 G/ ` stage = 0 # 断缆reset
' o# _& r' z8 c/ k: @# ] O" E+ } num_shoes -= 1+ F- ~# _* \! F3 T! i+ R
( K4 S! n0 V& L! R, I0 S1 ^3 F return profit, commission_paid2 I' U: T7 |7 h/ Z: f B# P4 m5 I
+ D. ~' @7 f" I
# 设置命令行解析
" `/ @9 H2 V- ]$ Y fdef main():$ B8 K" S* p- z2 ^2 _4 o
parser = argparse.ArgumentParser(description="Simulate Baccarat strategy with commission on/off.")
, J) j* U6 r3 x) n2 N% J& d parser.add_argument('--commission', choices=['on', 'off'], default='on', help="Enable or disable commission on banker wins.")0 w* t$ N+ e2 C8 [
parser.add_argument('--shoes', type=int, default=1000, help="Number of shoes to simulate.")
) _1 p0 X5 y7 b- h4 e- S1 P ; [* d% o/ |# E# V- F
args = parser.parse_args(). F" F1 R. \- o% t
4 H7 S9 ^0 w& E) N" H9 w& Q: m7 Q' ^ # 抽水开关:开启或关闭
% d7 h: f/ Z$ y4 c$ |8 T& z) C commission_on = args.commission == 'on'
" V6 T9 v4 m, F4 |4 s6 m : K0 `+ N v8 g. c1 t
result, commission = simulate_strategy_A(num_shoes=args.shoes, commission_on=commission_on)( S+ J0 Q) T6 Z% [
print(f"最终盈利: {result:.2f}")
; I% J' \+ D1 [3 [ print(f"累计抽水: {commission:.2f}")
, t+ Z" I( Q) |& h! x; f) b, e
0 K9 T8 E: H4 I2 o4 T- |( sif __name__ == "__main__":+ Q: F4 q9 F0 c# _0 w% [
main()9 p% @$ D% Q& d9 q4 O2 u& a% @
: Y$ u0 [5 K* y) T5 C
) h5 D! I( N" H, J步骤 2. 运行
/ O$ I( B# T+ ~
6 f, q3 n6 {3 @2 `* P4 |* v' J在命令行里进入文件所在的文件夹,例如:
) b2 E; \$ \2 \' Y% vcd C:\Users\你的名字\Desktop
; U4 M5 t+ P# B- e" |7 u5 wpython baccarat_sim.py
/ G: N+ v3 a- Q% _/ W1 c# t! d- E1 u I; u z
输出会显示:1 w. W% a. |+ w) W! T6 y* U
% a' _# ]/ S" l% U7 e. c4 s4 J0 Z累计盈亏: xxx
6 q2 l+ A2 x) `# N+ f4 U' C" B v累计抽水: yyy
+ E3 X% j7 U V5 r-------------------------------------0 F7 l$ _9 C( J) P. P4 p! [- U
实例:试跑3次,
: |. q/ B+ {. y B+ T5 A% W* uC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
! W7 s2 N( z$ i3 I* W最终盈利: -5360.35
4 {- D9 T7 w$ j1 k- e( ?# m; f累计抽水: 5176.35
% Y) t# a! q! Q" cC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py 7 v! ^& d8 v+ l; y2 f* a6 @
最终盈利: -5661.65
# p4 l/ d5 ]1 D0 D7 }' y1 a累计抽水: 5174.65
) w B7 J. {9 c1 ^2 OC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
- x* R9 q+ p) V: z% i最终盈利: -4244.50
2 M/ _$ |' S7 b! d) h+ @2 w0 u累计抽水: 5176.50
- X# h# F* h, Q4 j' G7 d' ~; s
! c7 C& f( k! `4 B# I) y* P; ^) ?说明你的 Python 已经能正常跑模拟了。结果也很有参考性:) Y# Y9 {. f% U: L- i6 y: J6 v
) ]4 I) F5 m8 j
累计抽水固定在 ~5175 左右 → 这和你设置的「抽水开关 ON」一致,因为你每手下注金额相同(例如 8 单位),程序是按 Banker 抽 5% 计算的,所以长期下来,抽水会稳定在一个范围。
: X/ {1 b/ ~ }' I* Y2 N6 g2 j) S) e, S- V+ r
最终盈利为负数(-5360、-5661、-4244)→ 这说明在 100,000 局的模拟中,哪怕加上和局不计,下注方向固定,数学期望依然是亏损。, @- O6 i, [/ A; S
这条缆不能直接用,用了会输。必须改缆法,或改缆法并且改下注规则。
0 i0 g! e0 m9 N/ ^8 G8 F人们喜欢举例盈利,有吸引或牛逼的效果。。。用亏损的例子,可以真实告诉你,道阻且长不容易。
$ I+ \/ ^6 \8 r# w但是别沮丧,办法总比困难多。只是,你自己悟的,是最好的。
# n+ e3 T; Q" v5 f# i& F- `4 {- [1 L e; `; V7 i' h
启发,,,可以变更缆法,改变庄闲比例,指定胜负路。。。。(待续) |
|