|
|
楼主 |
发表于 2025-10-31 11:15
|
显示全部楼层
本帖最后由 Banker 于 2025-10-31 11:17 编辑
( N* x f* b) c* }' \ E- h
4 w; b( ?. e: t可用Excel,逐手模拟过程(但 Excel 跑不了 100000 靴,会非常卡)。
* p- H" y/ _6 A' q9 C! KExcel 更适合 直观小样本测试,Python 才能跑大样本,Python 可以试试N万-1亿靴,10亿靴,有没有没必要?你高兴就好。
/ Q: L/ P$ u% p/ j7 I6 B5 Z" k0 q: o, X. e& U" V% o3 `
在你电脑上运行 Python 模拟器 (版本3.0以上,若没有,在Python官网下载安装)
! Y! I8 v1 K; q假设你已经安装了 Python 3.x(在命令行里输入 python --version 或 py --version 看看有没有)。8 y* j/ i* ^9 H" z
先写一个最基础的 百家乐投注策略模拟器(自己定义的规则)。4 Z8 k' d) `, l% @0 u
( |8 _5 O; n R) G: U! I% H$ M步骤 1. 新建一个 Python 文件5 @' q" {8 |6 Z# z9 G
打开记事本(或 VSCode、Notepad++ 都行,我用记事本)
0 }3 @; {& ~( R* {把下面的代码复制进去。: o" w) q6 D, h+ ^8 R3 a' j$ s8 T
保存成 baccarat_sim.py (注意后缀是 .py)。
- F0 |& C. q8 A" ~9 h& s) q& E5 @* Q c8 e/ Z
import random
8 h5 P& Q5 s# yimport argparse
3 J- `4 `% K' [
* a0 z6 m6 a5 T5 p; W# 初始化鞋子# A1 y5 B# V' v, O) ^5 |6 ~ N
def init_shoe(decks=8):8 z t# [& p& j( S2 A
# 每副牌52张,8副共416张
- _. u( Q+ H+ T+ h2 F7 K% K3 H& D shoe = [] ]+ Q+ i' x& s2 }- s+ T( _, {7 f
for _ in range(decks):
1 o' B C; r! h$ b: n' k shoe += ['P'] * 24 + ['B'] * 24 + ['T'] * 4 # 简化:庄24, 闲24, 和4
: \$ c6 y8 T- C6 K: f2 F random.shuffle(shoe)4 O7 I/ c" f: m; y3 f$ B |1 O# m
return shoe7 j, ~# \; h( B W p
' r) | _5 P7 f0 _- p! s# 发一手- }$ Y9 u( \" r
def deal_hand(shoe):
5 N \8 B2 x& F( E5 i% J9 h if len(shoe) < 6:
% T( s! _9 [+ R shoe[:] = init_shoe()7 I8 p; b, C$ X/ s4 o
return shoe.pop()
( A9 S8 K; ~+ p: S- n& c, }$ \
% p4 u3 j Y5 a7 n# 模拟下注法 A
) w5 l* \$ l3 w! S' `$ Sdef simulate_strategy_A(num_shoes=1000, commission_on=True):) `4 W s/ z$ \5 Y; q( f
profit = 0$ }* _8 Q! S! ^" v1 r1 j
commission_paid = 0
) Y* X& _1 h6 N; P shoe = init_shoe()
$ N( ?0 @, N# |
# z5 W! d# Q/ N/ L! X& }2 N # 策略参数
, p' C( P: A0 i0 c sequence = [1, 2, 3, 5, 8, 13, 21] # 示例进级
. s! M" I! x/ T c; O. {$ I stage = 0
1 }' F3 Z" H% }$ T target_side = "B" # 起手投注庄
% l( M, S$ H6 A! }
0 G5 Y9 f" @; \, `. _8 C while num_shoes > 0:
( d: H o) s X4 l result = deal_hand(shoe)! m: ^( O& e% ^; y5 v/ O( B# t
: S6 \/ y4 \* e5 l) a9 x* X
if result == 'T': 2 r$ K' L1 T! y( w6 o6 u
# 遇到和,不输不赢,重投
" y7 Q% u2 g& t; ^ continue
5 B7 P3 T# S( q5 G8 u! [4 S* E9 G2 e- X- z) @$ |6 u+ ~) P
bet = sequence[stage]
: V2 v& u" }+ V$ V: e# M ?
$ \) F! W8 B- a% C' u# [ if result == target_side:. r2 V3 \8 s* Y" i* t* W
# 赢9 E* ~, } [$ p Z
win_amount = bet
/ E, V% c, O, a$ T4 h3 @ if target_side == "B" and commission_on:! r) M, Y7 i. _
win_amount *= 0.95 # 庄赢扣5%抽水
. ~$ G& _- n* r# ?( O' z commission_paid += bet * 0.05! {- i: ?: b( M
profit += win_amount
9 Q, m* m t( }6 Z- y' Y+ V% t stage = 0 # reset& P+ v1 a7 ?$ Q2 @9 O- B+ F% w
target_side = "B" if target_side == "B" else "B" # 固定庄(A策略固定)
& F e0 C5 y9 w) N8 S' x" P else:
4 ?2 J( Y& k' v# J' T" O # 输
: w& _5 ^) c3 f. m+ Z" l profit -= bet
! p& A# H: T; m stage += 1
4 p7 C. t4 o( L if stage >= len(sequence):# P6 a0 F1 ?5 A+ }; F! V4 k$ V
stage = 0 # 断缆reset* J' \! a, D, f8 N. t% Y
num_shoes -= 1
6 ], d; {% ^8 J( i. q* h f& C) e: b) z( O! _
return profit, commission_paid! \4 p3 W7 U- j2 z( F0 y- J0 y
2 I3 S1 r5 M8 Z% Q# 设置命令行解析
0 ~0 d" w2 U* q% E8 [def main():
* Z" |- P2 S4 H/ W5 H2 c7 G parser = argparse.ArgumentParser(description="Simulate Baccarat strategy with commission on/off.")
/ [6 r3 Q1 G: Z( u/ N m+ E parser.add_argument('--commission', choices=['on', 'off'], default='on', help="Enable or disable commission on banker wins."): N3 i$ B# D _2 c% [
parser.add_argument('--shoes', type=int, default=1000, help="Number of shoes to simulate.")
% g! p" A8 X R) c5 A: k
& F C {: c6 B args = parser.parse_args()5 `2 ~8 z+ M! u6 X: q! f, t2 C
: U0 ~4 z+ Q. K% b Q
# 抽水开关:开启或关闭9 w! b7 \! Z5 y* U; |9 {8 V7 S
commission_on = args.commission == 'on'
' b1 y2 ^$ j3 U; J
( [- t1 Z {0 d! e! w result, commission = simulate_strategy_A(num_shoes=args.shoes, commission_on=commission_on)( y# ?' r; H) F0 m
print(f"最终盈利: {result:.2f}")2 p ^5 Y5 U3 m5 Q o1 B
print(f"累计抽水: {commission:.2f}"), U9 ?, [) C# F6 G' @( V7 X
2 n/ M3 h5 V. r2 I9 a V7 f3 u/ o
if __name__ == "__main__":
% ^3 r9 w/ A. H( R' l& u main()
6 I T, R" C8 s( W+ e' r8 Y4 s6 e4 P6 Z6 N: Y
% A) u0 m R1 ^4 ^. M* o+ m% ^步骤 2. 运行3 |; U( ~5 m8 `+ z+ n0 A
# q) @, @9 @# T2 \
在命令行里进入文件所在的文件夹,例如:. @8 ?( P! h5 M6 {
cd C:\Users\你的名字\Desktop
9 _1 O- d0 k7 s+ s" v3 Z' ipython baccarat_sim.py: {# o& B+ S6 s) T; j# x
1 K) ^% ?1 M' O- _输出会显示:
7 W6 B- J2 }1 l$ M$ |/ O" @7 \1 n" [+ f5 K
累计盈亏: xxx
~9 D% C) T; [% h! x) B% r累计抽水: yyy0 X$ ^- u$ R1 @' p0 {
-------------------------------------
( @% ]4 U4 @" [+ F/ x实例:试跑3次, ( E5 m( J4 b! W/ |+ J
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
1 L, F% M- L' f5 _最终盈利: -5360.35 ; L* W4 K; ^0 a# R2 p3 t3 [9 f# K
累计抽水: 5176.35 & B& \6 P. `) M6 g2 Y
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
* s; a/ v9 v, ]( ~* z最终盈利: -5661.65 l) X1 c5 `1 D0 I( a
累计抽水: 5174.65
2 K# _% k( e/ s$ {C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py % l7 @; P, H( i" E1 H9 `+ ^0 L/ {$ t i
最终盈利: -4244.50
2 `+ r" y6 N; k累计抽水: 5176.50
5 ^6 X% z0 p- I# ?
6 u5 e% ]5 e2 b& D" M说明你的 Python 已经能正常跑模拟了。结果也很有参考性:+ p0 Y" `/ ]9 b4 l
- P2 l. M) w6 N- n$ A
累计抽水固定在 ~5175 左右 → 这和你设置的「抽水开关 ON」一致,因为你每手下注金额相同(例如 8 单位),程序是按 Banker 抽 5% 计算的,所以长期下来,抽水会稳定在一个范围。
6 e' s3 N4 J/ S4 {& E R5 [ H" Y2 `# x7 v
最终盈利为负数(-5360、-5661、-4244)→ 这说明在 100,000 局的模拟中,哪怕加上和局不计,下注方向固定,数学期望依然是亏损。 F6 w1 O1 S& a
这条缆不能直接用,用了会输。必须改缆法,或改缆法并且改下注规则。
; [' r1 X$ q7 I. S+ P% g人们喜欢举例盈利,有吸引或牛逼的效果。。。用亏损的例子,可以真实告诉你,道阻且长不容易。) _, q3 V* H' m* y; K4 @; v1 s. Z- @' T! B
但是别沮丧,办法总比困难多。只是,你自己悟的,是最好的。8 w4 ]( Z; {9 a8 C" H7 N+ A8 L
% g9 s3 P9 G$ K/ o& z" z
启发,,,可以变更缆法,改变庄闲比例,指定胜负路。。。。(待续) |
|