|
|
楼主 |
发表于 2025-10-31 11:15
|
显示全部楼层
本帖最后由 Banker 于 2025-10-31 11:17 编辑
6 V0 P- G- X9 T
; a1 E4 J0 y. e/ E1 l$ p8 g可用Excel,逐手模拟过程(但 Excel 跑不了 100000 靴,会非常卡)。
. `: ^& T, P" F, `- W' jExcel 更适合 直观小样本测试,Python 才能跑大样本,Python 可以试试N万-1亿靴,10亿靴,有没有没必要?你高兴就好。
7 v, `3 l3 C8 t6 v: t. w0 f1 \7 { S4 O
在你电脑上运行 Python 模拟器 (版本3.0以上,若没有,在Python官网下载安装)
; E& J3 u# o5 X假设你已经安装了 Python 3.x(在命令行里输入 python --version 或 py --version 看看有没有)。' k" M" E; _2 N
先写一个最基础的 百家乐投注策略模拟器(自己定义的规则)。1 P- h5 ]5 O# |' U
3 d( F& `- O5 `2 e1 i1 S# S步骤 1. 新建一个 Python 文件3 G) L2 ^% Z( v. D8 y( T
打开记事本(或 VSCode、Notepad++ 都行,我用记事本)! i1 s8 q8 V U0 @
把下面的代码复制进去。
9 |, p. C3 G, k C5 f" V; P保存成 baccarat_sim.py (注意后缀是 .py)。; S# M& F0 W4 _- x4 K
! I: m' g8 `, `: j. Q
import random {/ H" t: Z6 A0 d" G p1 f6 O6 R
import argparse! T, m2 F0 L n/ e. ?, y
" q% j( q2 s0 H/ N. }; _
# 初始化鞋子
/ Q- Y$ r3 P7 `( ~def init_shoe(decks=8):
8 M* W% [( \+ M; z# H+ V" q # 每副牌52张,8副共416张
q) r& ?; q. z' l; o: {$ s shoe = []
9 M6 _/ F k, e. j" U+ I& ^) r4 i for _ in range(decks):; _/ T; @2 k; l+ n1 y( R) N
shoe += ['P'] * 24 + ['B'] * 24 + ['T'] * 4 # 简化:庄24, 闲24, 和4$ d6 J$ Z8 O4 w, {/ S/ ~
random.shuffle(shoe)) C9 {3 W# R; u
return shoe0 R1 o: Z: C6 Z) T& l5 Z T
' M( ]7 Q$ Z: d# K/ Y! C2 ^# 发一手% c8 ?- d) i" S
def deal_hand(shoe):
, X* d3 B1 v- z9 e0 y4 J if len(shoe) < 6:/ {& k4 ]2 ]1 D0 F4 m7 [! c
shoe[:] = init_shoe()+ w3 W$ V5 c+ a. B# s: F
return shoe.pop()
3 }* @. z0 N4 K6 V3 a* f6 Y$ t# F. f7 S3 @) g, N
# 模拟下注法 A
" O2 q/ _ P4 @' t0 l! p& Bdef simulate_strategy_A(num_shoes=1000, commission_on=True):
; b( p9 ]2 U$ R: _ profit = 0
0 T5 r1 | Y% R$ m$ y! u commission_paid = 0
4 F+ L/ ~4 L& G& w shoe = init_shoe()
/ F, i( G/ `+ _3 L9 p2 h6 E6 y9 [ . j4 d% J+ G# P0 \% e. j4 ^: i; s
# 策略参数
& ~5 ]% c, ]) C sequence = [1, 2, 3, 5, 8, 13, 21] # 示例进级) c6 c* s; n' |; y- W/ }/ {
stage = 03 G% i. l( `3 ` s
target_side = "B" # 起手投注庄# c2 _7 m' ~$ Z; D6 @! n
8 E8 O3 w0 T* ~2 E
while num_shoes > 0:$ B# i: H5 q! M. |+ k/ k
result = deal_hand(shoe)* h& e9 D: W3 E
& O0 T8 @# p* s* r7 H- e
if result == 'T':
I8 _* N7 L9 d6 {, g" E% p4 y& u # 遇到和,不输不赢,重投9 i* l! B+ T5 ], v" f
continue
( w4 _8 @/ w6 }- }7 C
$ A8 m6 I+ G1 I: v4 ` bet = sequence[stage]
}; ]$ o4 L ]# L3 m , D; W* g* @2 p
if result == target_side:
1 M; I5 d9 X/ B- b* N& S2 C/ E+ Z # 赢9 ~9 A1 [( [3 B0 Z& v5 A+ i3 B
win_amount = bet
0 \4 ~7 H& d/ w' p if target_side == "B" and commission_on:
9 u( y* E# T8 N& U5 Y; f! S/ l; E win_amount *= 0.95 # 庄赢扣5%抽水
J$ M3 A, x1 l commission_paid += bet * 0.05
4 [% Q+ \0 e- Q7 k$ q profit += win_amount
0 Q) q. t, d- j. e! ] stage = 0 # reset
: A6 i4 N0 R* Y( X5 v) B9 F7 M target_side = "B" if target_side == "B" else "B" # 固定庄(A策略固定)5 n) w: e/ H% u
else:
6 q$ G- A7 D2 }6 k, f9 V # 输. j6 Z- `5 I. U" v4 k4 F* n
profit -= bet9 r0 w% w$ N, y7 ~2 Q$ J. p
stage += 1& O# }% f, r) ?7 N+ ^
if stage >= len(sequence):
/ h: j7 F1 Z8 ^% r9 G6 @8 T stage = 0 # 断缆reset
9 w* j! o d& Y6 h$ h/ c W/ L num_shoes -= 1. p% u7 F2 s$ _" R5 |
( H# H' X2 e0 \% I! |( V
return profit, commission_paid
: Z4 D! E' @- ` Z3 e& [
8 c6 I, e0 h- m7 }# 设置命令行解析
% P9 k! [) Z4 g' @def main():( u* C# U$ R) o, i/ q
parser = argparse.ArgumentParser(description="Simulate Baccarat strategy with commission on/off.")6 _" K% ] Z" |1 l8 z! U0 }$ Z
parser.add_argument('--commission', choices=['on', 'off'], default='on', help="Enable or disable commission on banker wins.")1 f9 R& s+ ?) t
parser.add_argument('--shoes', type=int, default=1000, help="Number of shoes to simulate.")
' m+ E9 g3 {. c [. j . r! y& [; f7 ]
args = parser.parse_args()- u% `* q* ~) a- D4 Z+ g4 G) g3 _& ~" `
0 Q4 ?( A& Z3 \ k # 抽水开关:开启或关闭
. u0 R7 g V0 d- X commission_on = args.commission == 'on', }" E$ f7 R0 o6 K
- y5 [; n# S# Y _2 p result, commission = simulate_strategy_A(num_shoes=args.shoes, commission_on=commission_on)) |6 \% t/ N; i' J" y3 v( `. \
print(f"最终盈利: {result:.2f}")9 Q/ l" m8 K8 `" |* @1 I$ M
print(f"累计抽水: {commission:.2f}")
. Q5 r$ X7 i: E- u W
+ _- ^( |# X1 L) pif __name__ == "__main__":* B% V6 z7 t& w3 s
main()8 j4 M$ n7 s6 O
1 n }% Y2 C# \ h! _& K5 S0 V7 f
" U0 M% Z+ N# a4 j: o+ C1 r步骤 2. 运行/ U' A0 U! K% B2 {, x5 S2 c! C6 U
1 {/ Z( c( L/ U2 B7 \在命令行里进入文件所在的文件夹,例如:( W6 u. x& ~' P0 r) C
cd C:\Users\你的名字\Desktop
1 u; h _& j9 F" _4 _. Apython baccarat_sim.py
" c# A/ W/ T4 z# G! n. d& \8 \: Y- s& Z6 C. Q$ L
输出会显示:% `: A# b* i$ t( L: X
# h' y0 P& i& u4 |! b7 x7 I
累计盈亏: xxx
( e, t2 A6 @ j累计抽水: yyy4 l z3 y* W$ `9 L9 _7 ?
-------------------------------------
l; {/ @3 B" A0 B$ i) g5 ~+ q实例:试跑3次, 0 h. q _+ x3 R# c: H; t1 C. G" _
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py / t# p. v- ^. ]5 X& i d
最终盈利: -5360.35 h- G6 I+ T' Q0 E" ]6 \+ N0 E
累计抽水: 5176.35
3 j7 }" ] `# X6 a! t( mC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
# @7 W+ }* ] q最终盈利: -5661.65
2 b0 d F9 j- a% l( |/ y累计抽水: 5174.65
* b/ F1 U* U) r. xC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
" p5 i* @. T, z* Q最终盈利: -4244.50
. I# \3 o9 d4 D' b' q& O, N7 n$ Q累计抽水: 5176.50. z' s; [! Y) v* ?" F. @
* P* D( B* e4 R
说明你的 Python 已经能正常跑模拟了。结果也很有参考性:
, k" p: u( c. y Q! M; B) s& G Z" B& c; {" t% ?
累计抽水固定在 ~5175 左右 → 这和你设置的「抽水开关 ON」一致,因为你每手下注金额相同(例如 8 单位),程序是按 Banker 抽 5% 计算的,所以长期下来,抽水会稳定在一个范围。
0 r1 Q5 F, A& l* N% F' t, J" ]( D- y: M" H" q6 s5 i9 I4 I4 p
最终盈利为负数(-5360、-5661、-4244)→ 这说明在 100,000 局的模拟中,哪怕加上和局不计,下注方向固定,数学期望依然是亏损。8 C" A/ ^9 c( @* S8 ^
这条缆不能直接用,用了会输。必须改缆法,或改缆法并且改下注规则。, o4 O9 g7 s1 X% }8 V% j( Q0 h
人们喜欢举例盈利,有吸引或牛逼的效果。。。用亏损的例子,可以真实告诉你,道阻且长不容易。
8 s% E* h# y, X但是别沮丧,办法总比困难多。只是,你自己悟的,是最好的。" H0 I, n& ?: w
" F y; G6 O" [ ?! X3 e# t4 w0 I启发,,,可以变更缆法,改变庄闲比例,指定胜负路。。。。(待续) |
|