|
|
楼主 |
发表于 2025-10-31 11:15
|
显示全部楼层
本帖最后由 Banker 于 2025-10-31 11:17 编辑 8 X) l5 X9 G; Q9 e
8 i2 _ _0 w) `1 u9 \( Y# `可用Excel,逐手模拟过程(但 Excel 跑不了 100000 靴,会非常卡)。
) b0 V) k9 P* f" XExcel 更适合 直观小样本测试,Python 才能跑大样本,Python 可以试试N万-1亿靴,10亿靴,有没有没必要?你高兴就好。
+ s& b* \. {: [, v' J% ^
/ e m: Z- j! z/ n* I2 \在你电脑上运行 Python 模拟器 (版本3.0以上,若没有,在Python官网下载安装)3 B$ Q2 q9 e+ m: Q! W/ m9 k
假设你已经安装了 Python 3.x(在命令行里输入 python --version 或 py --version 看看有没有)。3 Y6 Q; X# b' M5 x& h( z
先写一个最基础的 百家乐投注策略模拟器(自己定义的规则)。
4 }/ ~4 w2 M1 p6 b A) y3 Z! O
& a! [. [) c: e4 \步骤 1. 新建一个 Python 文件
/ m3 P5 b$ t* Y$ [# |打开记事本(或 VSCode、Notepad++ 都行,我用记事本)6 W. a1 Q' P3 n
把下面的代码复制进去。
5 T! u+ s+ l% X! F' T保存成 baccarat_sim.py (注意后缀是 .py)。
0 t- z2 }7 C# |0 |' Q* m) E/ x/ C+ R5 V0 ~# k
import random
3 N$ A3 G+ w# {' ]import argparse5 ]* B6 U& |0 [$ w* A' Z
3 K2 o2 o% @ V- w& C4 w7 R2 ^5 l& g" }# 初始化鞋子# {3 Y0 D f! `, D& r( {
def init_shoe(decks=8):- [3 U+ @4 Z! g1 Y
# 每副牌52张,8副共416张# Q& J: ]( W, ~8 X, r
shoe = []0 \5 E/ ^5 R- p5 [7 S
for _ in range(decks):. W U$ W$ `* l& s
shoe += ['P'] * 24 + ['B'] * 24 + ['T'] * 4 # 简化:庄24, 闲24, 和4# [: K' x+ F) N" N- D
random.shuffle(shoe)6 g& p8 Z/ c9 U' r+ N$ r0 p- w
return shoe
" ]. c8 O! H B" S+ S
B' L" o2 ]' e* K# 发一手
9 K" U o. N& adef deal_hand(shoe):
/ T* B' {0 A8 B6 ]% G) c9 B5 A5 [ if len(shoe) < 6:
: a, @3 }) @9 f" y, u: s1 l shoe[:] = init_shoe()
+ p _/ v/ j; L5 S return shoe.pop()
1 o, J: @* n5 f" ~8 a
) C, s) ~, W1 @6 n# `% a! l# 模拟下注法 A" T R6 [& R. t: m/ J4 J
def simulate_strategy_A(num_shoes=1000, commission_on=True):
3 Y9 q3 ]4 Y9 _1 y l profit = 0% s: }$ }$ P6 g
commission_paid = 0' B3 E! s/ E* Y8 S
shoe = init_shoe()8 u# ^; }* Y8 S% }' X
* s' e3 A1 J- W- N- ? |6 n6 }* O$ p # 策略参数1 D; X& y/ U6 v8 C0 h' w
sequence = [1, 2, 3, 5, 8, 13, 21] # 示例进级
9 ~% {3 Q- N j5 e- ]! D9 f& d2 Y stage = 0. s- x& J) ^' f- U0 Z
target_side = "B" # 起手投注庄
2 f9 v) O- H) N6 M/ K! p9 g) q1 V. A @ s# I9 m+ W4 ~( r( Q
while num_shoes > 0:# d) {# ~4 a( D3 T
result = deal_hand(shoe)
. ?* L. l. s. M( p- B/ I( u1 p0 _8 @: F: q( o# c
if result == 'T':
" {) C' w& U. ~2 K6 ~6 \3 Z # 遇到和,不输不赢,重投% n8 Z9 Y* G, M; u s2 x7 s! V: k
continue) G& e9 O2 R; p' `1 @8 x
8 ^4 t) b* J6 p/ C" a' Y4 M bet = sequence[stage]7 H( @. ~/ G% {1 o- R% { [ y: @
0 K6 h$ j$ V4 f; X4 y) c3 G
if result == target_side:4 t y& m; }1 w6 F* y% b; m
# 赢0 B% ~7 \4 F/ {3 q" p9 P7 N
win_amount = bet
% m5 H# E( w+ P& u. v4 N$ J3 R$ ^ if target_side == "B" and commission_on:+ s* A" s% F6 c
win_amount *= 0.95 # 庄赢扣5%抽水! w' W( U7 M- h5 r4 h8 \ n
commission_paid += bet * 0.05$ | G! T4 @3 x1 [% A
profit += win_amount
' \, a7 T. t8 N stage = 0 # reset
/ V6 X. T1 j; f$ B+ v; j target_side = "B" if target_side == "B" else "B" # 固定庄(A策略固定)8 o: d. `9 P8 t+ J6 h) \" H
else:
0 @6 m/ {) l( ]3 A& @& o. } # 输. {& Y) A0 `5 t. T) I; E
profit -= bet! J" \# z! {& y9 s V
stage += 1
* x) r* B; ^; P- i( l; I( A. z; ^; E if stage >= len(sequence):
6 N& F) g* ]+ w stage = 0 # 断缆reset
8 h. y/ w$ i- E num_shoes -= 1
8 W4 X, [, c2 a M- ~* {: m! O4 t% b* F* w) N" q
return profit, commission_paid i4 F' A6 _6 r1 \
# I/ z6 g0 I3 s% D) w1 W- a. _# 设置命令行解析' X; ^+ N1 f+ p4 _) R0 [* U
def main():
/ U6 Q' x8 N* u1 e4 N4 ~. m7 x parser = argparse.ArgumentParser(description="Simulate Baccarat strategy with commission on/off.")
' ~) }( I j* A4 j parser.add_argument('--commission', choices=['on', 'off'], default='on', help="Enable or disable commission on banker wins.")& D! F& P3 L. E+ C0 H) r6 p
parser.add_argument('--shoes', type=int, default=1000, help="Number of shoes to simulate.") r% ?1 J# V9 X2 t8 ?; t6 w
+ A( g/ |/ @/ \. U. d
args = parser.parse_args(). ?; Q+ z( [: G, q2 Q1 |, y; z
, z$ _ Y( B% t1 _' X+ M" ~% @* l- ]" t
# 抽水开关:开启或关闭
6 P! P$ _4 V( H/ ~0 ^5 N commission_on = args.commission == 'on'
6 u3 ^: C2 }& `- [: V 2 G7 Y, Y! b6 [2 I5 y# G
result, commission = simulate_strategy_A(num_shoes=args.shoes, commission_on=commission_on)4 f3 _0 k* Q* B& ~. ~
print(f"最终盈利: {result:.2f}")& z' O$ O" Z" ~8 k( q* Z" [
print(f"累计抽水: {commission:.2f}")
9 r. z. T$ y3 f# M( N2 l' Q
' @% a5 L/ q1 P$ ]" r8 g+ gif __name__ == "__main__":; a& \& Y _; q) A: _1 [2 V5 j% k
main()
, y2 T' \; _5 R% t4 _) C' x5 D& }+ C) k: ~7 t% q
0 I% n( A6 b& B0 A; m0 W& P* [
步骤 2. 运行
" z; x( y/ I4 U/ o, t5 a0 W' ~3 G2 K9 g- e/ t
在命令行里进入文件所在的文件夹,例如:
, e* x! t0 q7 y1 Bcd C:\Users\你的名字\Desktop: } T. L/ P0 i
python baccarat_sim.py. Q9 d; h6 L f# j
) N) T, \. O9 Y+ T& L8 u/ [1 n
输出会显示:
& H2 N0 l% {) a \% d, d% |4 Z' s8 q, r0 m* V9 R6 y* y ?" t
累计盈亏: xxx
( E+ ^! L8 b8 h) N1 ~累计抽水: yyy
: D+ T+ V4 _4 l) r8 U' n# L, [' K-------------------------------------' ~ W# x: M! i* q# j. F
实例:试跑3次,
) y! d0 h- |+ ~! P' }$ ?& h$ A9 IC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py % N2 l, {' p; _; m8 V$ [ T
最终盈利: -5360.35
4 O& D' W7 z8 l" q: ?+ y8 p累计抽水: 5176.35
6 q% V9 d& V! q; M: J( `6 tC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py 2 _5 S3 O6 J3 M
最终盈利: -5661.65 9 ~- P# q% R) u
累计抽水: 5174.65 " \; ~8 t4 ?$ \5 c' ] a4 @
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py # ?5 J3 b- K6 s, P! Y4 S4 `6 z5 C
最终盈利: -4244.50
G2 I1 _# m1 T/ Y1 w1 \累计抽水: 5176.50- G a. D: R* Q
) n: h# ~- {' y/ \+ n& X
说明你的 Python 已经能正常跑模拟了。结果也很有参考性:: J/ k8 G! u! N$ `; t d
5 N+ T+ Z2 U. m) K* B
累计抽水固定在 ~5175 左右 → 这和你设置的「抽水开关 ON」一致,因为你每手下注金额相同(例如 8 单位),程序是按 Banker 抽 5% 计算的,所以长期下来,抽水会稳定在一个范围。
4 V. y6 h8 M0 X s6 _) X; n: J# d9 u: p( D. q
最终盈利为负数(-5360、-5661、-4244)→ 这说明在 100,000 局的模拟中,哪怕加上和局不计,下注方向固定,数学期望依然是亏损。6 J: O$ B- W# m
这条缆不能直接用,用了会输。必须改缆法,或改缆法并且改下注规则。) |2 C. A3 s2 O7 e- D7 j4 d
人们喜欢举例盈利,有吸引或牛逼的效果。。。用亏损的例子,可以真实告诉你,道阻且长不容易。, C& n! R. J7 m+ p& T, E
但是别沮丧,办法总比困难多。只是,你自己悟的,是最好的。+ I) f6 `6 i0 Y, [/ @( S5 Y6 `2 `
. b4 _8 T1 q" m! n6 ?0 X启发,,,可以变更缆法,改变庄闲比例,指定胜负路。。。。(待续) |
|