|
|
楼主 |
发表于 2025-10-31 11:15
|
显示全部楼层
本帖最后由 Banker 于 2025-10-31 11:17 编辑 - V3 C& h* v8 Q' l* P1 T
6 w# t) j- u& U5 H/ S
可用Excel,逐手模拟过程(但 Excel 跑不了 100000 靴,会非常卡)。" s7 j9 l4 h: X, P- v
Excel 更适合 直观小样本测试,Python 才能跑大样本,Python 可以试试N万-1亿靴,10亿靴,有没有没必要?你高兴就好。
" j k9 L4 s$ [4 n/ H; P; l. e' u# s( n) C) m
在你电脑上运行 Python 模拟器 (版本3.0以上,若没有,在Python官网下载安装)
$ F: D: G# u7 ?* B假设你已经安装了 Python 3.x(在命令行里输入 python --version 或 py --version 看看有没有)。
4 E% t& {; U, O1 k. `7 x8 [5 V先写一个最基础的 百家乐投注策略模拟器(自己定义的规则)。3 Z/ B7 a( Y }- { x
3 r/ \0 z& z4 y5 V g9 c
步骤 1. 新建一个 Python 文件& P: a7 _/ r! b: s
打开记事本(或 VSCode、Notepad++ 都行,我用记事本)
+ i' `7 s* T$ I5 r; u5 _把下面的代码复制进去。
$ L" T6 \1 u/ D+ F$ Y保存成 baccarat_sim.py (注意后缀是 .py)。
) R1 \' X% A9 Y& a+ B. e6 s3 h! q2 u0 @; l+ M; _3 g# ~3 A( R
import random
( d- e, i+ m4 w; ^import argparse- f) r$ n' A& w9 L: Z) {9 s
, y4 k( |" j0 C& n' b% F9 C9 P
# 初始化鞋子$ y3 r4 \6 Y( s. ~$ e8 D
def init_shoe(decks=8):
7 P4 M( V6 Y( K# ] # 每副牌52张,8副共416张
+ D j0 s; w+ \% A* f2 t' w6 v shoe = []+ t( M1 Z3 m }8 L5 O+ L% |
for _ in range(decks):" b! |( _/ K3 S, S1 G
shoe += ['P'] * 24 + ['B'] * 24 + ['T'] * 4 # 简化:庄24, 闲24, 和4
& K0 H( w& `4 X random.shuffle(shoe)' ~8 @( Z& G) \( b2 } j- p2 d
return shoe
+ _0 O1 L) z) y+ b5 |( a4 ?0 m5 ]1 _+ ^1 |3 w
# 发一手6 V7 B! `: h' v# O1 r+ E/ u& c
def deal_hand(shoe):5 h( X3 y3 G* v8 s4 r3 ^2 E
if len(shoe) < 6:: q- \5 C0 b0 y( Z
shoe[:] = init_shoe()
( z1 d6 G4 ~9 S; I9 B return shoe.pop()
/ \. v7 R4 R$ _7 w8 k
* h. k+ `+ ^( p$ k! I4 q% d8 o# 模拟下注法 A
2 I5 d" b/ o1 q% ~0 fdef simulate_strategy_A(num_shoes=1000, commission_on=True):
4 h6 v) Z7 W7 u8 { profit = 0
/ I$ ]! f# s8 X K commission_paid = 0
. \6 X* k% g7 w7 o5 ] shoe = init_shoe()
3 h% ?* D( n; x4 J+ C
$ N; v+ W v$ X* A w # 策略参数 b# o- l. H, J$ J
sequence = [1, 2, 3, 5, 8, 13, 21] # 示例进级
k& O1 `- ]$ `0 u: m n2 K stage = 00 y- B* s0 \* m' _- h3 q
target_side = "B" # 起手投注庄$ S4 q! F% ]% i$ Z+ V% m4 O
6 M5 P7 @6 T4 L+ b% P
while num_shoes > 0:& H( X6 }' `, L8 s' Q8 J
result = deal_hand(shoe)$ [4 W% [1 E) G) Y T
* C$ C$ J u6 a# n, B* E* H if result == 'T':
, E7 B' Y% d5 ~2 @+ H: H # 遇到和,不输不赢,重投! l% [& o5 m$ g2 h8 ~0 H. ^
continue
. ]9 U$ J) c2 }, P5 U& P9 T- i6 @8 D: c; y. J0 |$ Z* \/ @
bet = sequence[stage]
/ }& q0 C- O" F" e$ T: F3 d , M7 r8 l- A9 `& {1 A% X
if result == target_side:
8 D9 f, W3 r3 e' x& h/ K # 赢
: d' o: J) @, G" o win_amount = bet
, [. e5 Z" }* @0 Z3 y$ r if target_side == "B" and commission_on:
8 \- a* T. z( L1 W4 d win_amount *= 0.95 # 庄赢扣5%抽水
! c$ M F& @: P9 L. O commission_paid += bet * 0.05
5 a* q; P4 T4 S2 `$ s' M profit += win_amount
. F0 D7 `1 b: E3 y; O2 F, C stage = 0 # reset) V& p8 _* B; T5 w& t3 }8 j
target_side = "B" if target_side == "B" else "B" # 固定庄(A策略固定)% z* R6 j2 D% w0 i) {* o" ?
else:
7 R8 T$ S, r7 Q' ] # 输6 t9 l* ~) J7 R2 u( T8 j' H
profit -= bet
* h' F+ K l1 s6 ^; f) `6 Z5 q stage += 1$ T, x, q/ f$ v3 Y
if stage >= len(sequence):# Y7 A1 H) J' g) c' Z3 f. X
stage = 0 # 断缆reset( f+ W" P" }& A2 D
num_shoes -= 19 b/ t0 {3 f/ b' P5 n( C2 \ G' Q
2 w4 \/ ~! ^. b/ @2 O ~, T4 S return profit, commission_paid9 m3 F( \; V# _1 z9 n+ V+ r) j
$ u4 V" O# n6 j* L( t! `4 N
# 设置命令行解析
+ V% L8 T, U/ X, \- O% Ydef main():
: T8 x& V7 P& g I parser = argparse.ArgumentParser(description="Simulate Baccarat strategy with commission on/off.")- s6 u* ^8 z* H# W$ a
parser.add_argument('--commission', choices=['on', 'off'], default='on', help="Enable or disable commission on banker wins.")6 } Q* w. J6 M& s3 v! R
parser.add_argument('--shoes', type=int, default=1000, help="Number of shoes to simulate.")
. e e7 ?# ]; O1 H) ?8 X. }
! `! ?" t1 V1 ^* c7 y6 g$ |( n+ W4 U/ Z args = parser.parse_args()
* k& G- {! ?3 Z* G E 2 _4 d8 E, {6 q3 j: U
# 抽水开关:开启或关闭* m3 B( x& H3 V0 I" w1 p( g
commission_on = args.commission == 'on'
& q2 {4 ` ^8 D$ a 6 B! x) Y5 O% Z* B/ M( o ]0 r
result, commission = simulate_strategy_A(num_shoes=args.shoes, commission_on=commission_on)* ~6 e. u7 Y4 c- n a0 U
print(f"最终盈利: {result:.2f}")
- g! }( [+ s# ^ j" P- E print(f"累计抽水: {commission:.2f}")9 h( A& \7 f/ g, `- l1 J
+ M9 V% f8 z. l% K6 {
if __name__ == "__main__":
4 |/ D! G4 T5 d# t main()5 ?0 ~9 [+ L2 [' V& b
9 b! S6 u, r8 o. ` F, D
. V; e! I/ \8 R% z
步骤 2. 运行9 H' f$ X0 a5 q" K5 _
0 h j/ G5 K; _# j* Y# L2 P- l9 V) R
在命令行里进入文件所在的文件夹,例如:
% @( b1 G# I1 w' `) ncd C:\Users\你的名字\Desktop
5 r; _9 k2 Y: A7 i' opython baccarat_sim.py
, T3 ^1 D4 z5 w2 V7 E( Y: Q
4 r2 F, U, }: i) Z" O6 ]" {8 O3 F输出会显示:
) a/ E% Y3 }- O5 t( A& _# U* k# Z+ d3 x* s
累计盈亏: xxx
1 i; t7 w( U9 G# w6 m累计抽水: yyy
}: ?5 G5 n" T: E9 c3 L-------------------------------------5 O& \$ a; W0 c" @4 j
实例:试跑3次, 8 k7 b2 x" B3 ~9 h/ o5 `
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py / L& ?9 l0 t0 g3 j
最终盈利: -5360.35
) L( g1 \% w. {8 Y累计抽水: 5176.35 ! p3 U" d( J- [- U
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py % e, m0 r# W, [4 n7 L
最终盈利: -5661.65
. K; u8 Y' A& o. r( d% `( ?$ u累计抽水: 5174.65 3 ^! u, b1 u8 G1 C+ Z3 k. Z
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
: G5 Q( W0 U& S1 N) `1 u9 h! f% x最终盈利: -4244.50 2 J+ H0 k2 K4 [6 i9 {
累计抽水: 5176.50* J. p/ k, s3 D; M1 q1 W
3 j; T% |6 @9 j) }, m说明你的 Python 已经能正常跑模拟了。结果也很有参考性:
) k. N S: w- e0 h C& k
+ |0 L i F% J累计抽水固定在 ~5175 左右 → 这和你设置的「抽水开关 ON」一致,因为你每手下注金额相同(例如 8 单位),程序是按 Banker 抽 5% 计算的,所以长期下来,抽水会稳定在一个范围。
4 [; m# f) A/ X4 w3 Z% q
! x4 ?; Q1 c4 w- a/ [! V' a最终盈利为负数(-5360、-5661、-4244)→ 这说明在 100,000 局的模拟中,哪怕加上和局不计,下注方向固定,数学期望依然是亏损。
( j/ ]4 o# g1 l这条缆不能直接用,用了会输。必须改缆法,或改缆法并且改下注规则。
+ _4 T' ?( k) Y1 n) W( ~( @人们喜欢举例盈利,有吸引或牛逼的效果。。。用亏损的例子,可以真实告诉你,道阻且长不容易。1 r/ J( w5 d4 q( y# ]
但是别沮丧,办法总比困难多。只是,你自己悟的,是最好的。# y1 Q9 y3 j* J# C' {# g( |
$ o, O# H7 Q2 g5 b
启发,,,可以变更缆法,改变庄闲比例,指定胜负路。。。。(待续) |
|