|
|
楼主 |
发表于 2025-10-31 11:15
|
显示全部楼层
本帖最后由 Banker 于 2025-10-31 11:17 编辑
0 G' ]- Q' r Z/ D, w3 C/ } G7 `3 H% D% w9 h* b( t
可用Excel,逐手模拟过程(但 Excel 跑不了 100000 靴,会非常卡)。% o' A2 W# O! P$ c6 d7 x. K
Excel 更适合 直观小样本测试,Python 才能跑大样本,Python 可以试试N万-1亿靴,10亿靴,有没有没必要?你高兴就好。$ L& s8 O8 N# m+ T
3 a# g4 k# \! l h6 k* ?1 T" a3 m
在你电脑上运行 Python 模拟器 (版本3.0以上,若没有,在Python官网下载安装)8 B- f6 ]* {+ d
假设你已经安装了 Python 3.x(在命令行里输入 python --version 或 py --version 看看有没有)。
4 b5 c; p1 m5 z6 y% z先写一个最基础的 百家乐投注策略模拟器(自己定义的规则)。
6 v7 g& U$ c. ?3 R" _# |5 D; ^ S- l1 j' I
步骤 1. 新建一个 Python 文件6 y7 b$ Q9 ]* K
打开记事本(或 VSCode、Notepad++ 都行,我用记事本)) o$ s" k" `& s* I$ B, {9 {- r5 U
把下面的代码复制进去。
& ?- X6 B6 h: m# e5 |; z- [/ S保存成 baccarat_sim.py (注意后缀是 .py)。
`0 |3 I& r# }; Z) {' b3 V1 b. g+ q2 B- \
import random, g% U7 V$ A P# S6 H: d
import argparse
6 ~! c4 G* h, T6 m! [" T6 I9 f9 s I8 S7 L
# 初始化鞋子
& l% B9 H8 q1 n: {' b6 Ldef init_shoe(decks=8):4 m0 a" e& m4 u3 R; h1 F4 W
# 每副牌52张,8副共416张0 ^8 U. g5 g( G& G" u5 y0 G# ~
shoe = []
- | A; A; }, Y% r for _ in range(decks):
+ g8 G3 z3 h- i; l3 [ shoe += ['P'] * 24 + ['B'] * 24 + ['T'] * 4 # 简化:庄24, 闲24, 和4% \9 ]3 U. c' h+ c; m( m
random.shuffle(shoe)
. @6 s$ G( K( a" S8 H, g% f return shoe; t: z3 f$ w c8 x% W
) P. z4 x- ~0 x$ [# q
# 发一手# \3 \4 g' H/ Q" W
def deal_hand(shoe):
* q- N5 K. t6 K' a1 y) G9 {; Q/ D if len(shoe) < 6:& G% D9 }4 h7 U9 m* E T% ~
shoe[:] = init_shoe()
; y$ A* t$ s6 t1 t M return shoe.pop()3 N7 K( ?: u; w, K! ~
2 e* _- W' W4 D1 u) I: U* p* r# 模拟下注法 A
' N% u: h6 A0 B$ V/ Adef simulate_strategy_A(num_shoes=1000, commission_on=True):) G2 w+ f g' F& P" C" A9 P
profit = 0
) T3 ^! X, ^5 p7 V4 w+ s1 o) ?! c3 a commission_paid = 0# `* U5 g: @$ E! X) \- k' y
shoe = init_shoe()# J, F: {, \; P6 M8 E
' e, y# L. h+ P/ \ # 策略参数% ?* _/ s+ U. d* q% _2 R+ g4 Z- n
sequence = [1, 2, 3, 5, 8, 13, 21] # 示例进级& ]$ M) ^5 y. ?
stage = 0" [+ c% j% t" A' O3 k
target_side = "B" # 起手投注庄# h7 m# u! q5 E t8 f
3 {0 _3 w* A7 L( a0 S3 i while num_shoes > 0:
+ b P7 F E: U result = deal_hand(shoe)" z! q7 K( J9 T8 ~9 |. o
/ c9 Y# x; w4 {6 c) Y/ F6 x
if result == 'T':
; A+ c6 E2 c, l1 k/ C2 R4 O3 b # 遇到和,不输不赢,重投5 P' x8 q" K; N3 r9 l: ?% t% F, m" G% p
continue
! }5 K9 T+ N% v# t& o/ A8 d1 \" n3 a0 N3 g0 \
bet = sequence[stage]
; e1 v, o3 e8 a8 I" l2 B9 ]3 {
6 z; y% h$ L' ?% [ e: n if result == target_side:. ^1 c( {2 q8 R' c. G
# 赢
. L8 O9 G/ h, z# y win_amount = bet
) `: [7 t' e6 u5 v& t+ s if target_side == "B" and commission_on:
* H+ r5 M) I! Z8 b1 W$ F5 o* b win_amount *= 0.95 # 庄赢扣5%抽水
5 q( H- R! |, ?3 Y commission_paid += bet * 0.05
7 L8 W" u8 t6 c' ~: J profit += win_amount3 q1 A( Z: c S! g& Z6 S
stage = 0 # reset
. b( s4 \# ?& t S! K6 s7 S target_side = "B" if target_side == "B" else "B" # 固定庄(A策略固定)
0 S* C' v; B0 W4 z2 r: c8 B5 J else:
; W8 g" |( V3 g5 a # 输
5 K/ r- `" K$ U1 P! n: \ profit -= bet
1 X4 k4 z& l3 P$ u+ o stage += 1
- _& |& @0 [' Y, I* c$ P if stage >= len(sequence):
. y8 ?9 h* Q5 i8 ] stage = 0 # 断缆reset
/ n" `6 [4 A/ i" K; B" ] num_shoes -= 1" K- d! [0 W( v% t, \6 R6 y
/ z" M7 V6 Q( O2 v$ V7 s return profit, commission_paid y( f2 B' C# v% h- V, K$ e- W+ w
, I6 `6 Q$ Y* \: A. q# 设置命令行解析6 b7 T$ t1 D( Z- Q
def main():
0 Q+ b$ B* h! J' a: ]4 b! F parser = argparse.ArgumentParser(description="Simulate Baccarat strategy with commission on/off.")6 F- D4 ~, _# |2 L; G0 e7 Q
parser.add_argument('--commission', choices=['on', 'off'], default='on', help="Enable or disable commission on banker wins.")
7 m( u" m/ k; ?* l& U( }- J0 j- d parser.add_argument('--shoes', type=int, default=1000, help="Number of shoes to simulate.")
( y0 x+ e9 k' b
' V1 w# C, G9 X7 y args = parser.parse_args(); W% ]$ Y: w& m! j% k; V$ N8 W t
# F9 G, S1 q. @1 U9 Y
# 抽水开关:开启或关闭/ |6 @2 y9 o+ ?/ e/ q" F' v J1 \
commission_on = args.commission == 'on'
% i& i" o2 [$ `# j6 @. z- ~1 `
$ g: m( [/ m$ P) B, J result, commission = simulate_strategy_A(num_shoes=args.shoes, commission_on=commission_on). r2 U0 z+ M% Y: j5 A6 m
print(f"最终盈利: {result:.2f}")$ b) z$ M. h3 @
print(f"累计抽水: {commission:.2f}")$ T' L' K3 ~" ~9 q0 P# G/ J0 A
' U) m. @) B. v1 e2 E' v- @; y
if __name__ == "__main__":% J$ O) D6 t; {! d; B
main()
& K- I# U" B. c4 `! V% C: q+ {& @9 V( L* @
; `, q$ [& L$ `: \步骤 2. 运行' ^- A7 n6 P9 I7 b
% J3 I4 W: ^2 h) f" [" x6 t) Q在命令行里进入文件所在的文件夹,例如:
. m2 l: ^2 R/ F6 @: Hcd C:\Users\你的名字\Desktop
: U6 \& g/ M- g5 Mpython baccarat_sim.py7 l! ^8 J3 P# h5 x$ [" Y4 J4 M
' B- C/ a: H# ?: I
输出会显示:5 `( I5 M: [! l4 s3 H
5 P) ~' U9 w1 _5 w; D" I6 i- y
累计盈亏: xxx
7 q# U& k) D# g5 Y1 l* ]累计抽水: yyy
+ ^: H+ k: L+ y. |! l2 T* n-------------------------------------. ?& H5 y# K* {+ F7 J
实例:试跑3次,
" m' e& e; t3 h7 cC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py * A, W# w/ u O8 X! K$ Q B
最终盈利: -5360.35
- o8 N& x3 w0 h A9 g累计抽水: 5176.35
4 b0 `% G6 L0 \0 G2 ^* [5 }C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
+ D' {) h# c! W. Y最终盈利: -5661.65
; C4 [% j o v9 }累计抽水: 5174.65
+ C2 W+ @1 N! `$ }; xC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py , x5 V2 H$ F. [3 t) s2 R. I
最终盈利: -4244.50
/ }7 [7 c8 z% E6 X! [7 B. t0 `累计抽水: 5176.50
& R1 Y ~$ r3 I6 _# y5 n1 z' _1 @! p) h" x
说明你的 Python 已经能正常跑模拟了。结果也很有参考性:
$ z/ @, k! {) r& u( @
( K4 C' T( x Y% D ~累计抽水固定在 ~5175 左右 → 这和你设置的「抽水开关 ON」一致,因为你每手下注金额相同(例如 8 单位),程序是按 Banker 抽 5% 计算的,所以长期下来,抽水会稳定在一个范围。
1 }0 p6 j" P, E0 J3 n5 ~; @
& Y7 J2 q3 A8 ^5 Q* W最终盈利为负数(-5360、-5661、-4244)→ 这说明在 100,000 局的模拟中,哪怕加上和局不计,下注方向固定,数学期望依然是亏损。
3 W9 o, w1 m7 f/ j# {3 C这条缆不能直接用,用了会输。必须改缆法,或改缆法并且改下注规则。: K5 D1 x3 s4 X/ o$ W
人们喜欢举例盈利,有吸引或牛逼的效果。。。用亏损的例子,可以真实告诉你,道阻且长不容易。
1 G. W5 |3 ~9 v但是别沮丧,办法总比困难多。只是,你自己悟的,是最好的。+ ?4 m# x7 L* e+ g7 {
9 p- w. R& e# H' |4 j# ~: q启发,,,可以变更缆法,改变庄闲比例,指定胜负路。。。。(待续) |
|