|
|
楼主 |
发表于 2025-10-31 11:15
|
显示全部楼层
本帖最后由 Banker 于 2025-10-31 11:17 编辑
- N; T+ N. m! ?1 N* T0 m5 E+ o7 |; [, j7 \0 |
可用Excel,逐手模拟过程(但 Excel 跑不了 100000 靴,会非常卡)。
/ Q' D% I# _) mExcel 更适合 直观小样本测试,Python 才能跑大样本,Python 可以试试N万-1亿靴,10亿靴,有没有没必要?你高兴就好。' i, L: }) S7 l0 U4 F4 a$ M! I
$ g$ m2 B% b& A u; U5 m1 n4 X
在你电脑上运行 Python 模拟器 (版本3.0以上,若没有,在Python官网下载安装)
5 V5 U4 q8 Y9 d2 B假设你已经安装了 Python 3.x(在命令行里输入 python --version 或 py --version 看看有没有)。
+ B6 Q) V& P# s先写一个最基础的 百家乐投注策略模拟器(自己定义的规则)。) e( A( @3 L" Q
: T. ^; A0 p, j, Q7 {! c) O
步骤 1. 新建一个 Python 文件, i. \) e9 p" N1 V# Z% O ]& C
打开记事本(或 VSCode、Notepad++ 都行,我用记事本)
' c/ x) v5 A. ]5 y把下面的代码复制进去。
1 P( Z& U6 v+ ^: D4 A+ }. B保存成 baccarat_sim.py (注意后缀是 .py)。
9 }. \8 l5 z3 b# ]) z
u# W2 C+ q' t" ]import random. o* D5 V4 v Y5 _/ P" |7 P0 X
import argparse3 k& e& Z0 ?* }/ a
: M6 }' O; v4 T6 ^% Q8 f
# 初始化鞋子$ j9 g1 g5 T6 n) ?6 |$ I7 _; D
def init_shoe(decks=8):
) b" y1 l9 R5 X/ |" W # 每副牌52张,8副共416张
9 \) R3 y6 y! K) r shoe = []
5 k4 e* f9 h" ^( |8 j+ n for _ in range(decks):
# `6 I: M2 R. i1 N shoe += ['P'] * 24 + ['B'] * 24 + ['T'] * 4 # 简化:庄24, 闲24, 和4
9 ~) I& _1 ?- I5 Y+ A1 H7 d5 I- Y, N random.shuffle(shoe); J5 k0 Y ?5 r V, i3 t' _
return shoe
' a* D* \/ y8 g- y. o, S1 o; I5 p) J D* f% W
# 发一手
2 D) K9 u: H- a: {0 B+ ]; @% }: Vdef deal_hand(shoe):) C- g+ F. N6 v" C% N7 F
if len(shoe) < 6:
6 P- i0 }9 K$ W4 f- M- D2 g% D; G8 c- P shoe[:] = init_shoe()7 u2 n8 ?1 M. S0 g
return shoe.pop()7 D5 B2 K Z4 O6 C4 t
# x0 w7 k% r6 E3 P. o' e# c# 模拟下注法 A5 C. Q1 m/ Z! s8 S% @1 C
def simulate_strategy_A(num_shoes=1000, commission_on=True):$ L& A4 H7 j; V4 h
profit = 0
% R3 X, o$ w$ t" Y% ]# L" ^8 y commission_paid = 05 b' h. U) y, p. x& [
shoe = init_shoe()
+ q# q0 l: G) f3 x. v# U# K8 {
. }: P9 J1 w* Q4 V7 E% S; T6 g # 策略参数
- J, e# F h+ s/ v. i$ l, X& M sequence = [1, 2, 3, 5, 8, 13, 21] # 示例进级0 y7 \3 ]* u2 ]: g1 U* b" w
stage = 0
$ i. Y' h% L5 i6 l. } g target_side = "B" # 起手投注庄
% E1 B1 _0 ?4 Y
3 S5 p' T: v9 P2 o8 D while num_shoes > 0:" b T7 T; c4 {
result = deal_hand(shoe)
1 N5 w4 V, O; Q& R
. b0 l9 c# a' a if result == 'T': / L" T8 x7 d0 m5 \, o
# 遇到和,不输不赢,重投6 {* @$ I' A" |* s5 V
continue
# P" Z1 O# K$ l+ K" o. M
1 }/ o+ ], E# @7 Z( I# L bet = sequence[stage]4 ^ ^# q" l$ l8 d
" `0 c4 J: O. P: b0 |. T if result == target_side:
$ r, D. @9 t/ ]& U' G # 赢
. ?! F0 p% L5 _5 U, d win_amount = bet
2 k5 }9 @& {. n, P g if target_side == "B" and commission_on:& A" t- L# T- U
win_amount *= 0.95 # 庄赢扣5%抽水; u/ E3 s5 N$ p9 n, w0 ?* {
commission_paid += bet * 0.05
; u) H8 r* M6 M5 B profit += win_amount, J4 J/ ]8 Z& f. W
stage = 0 # reset
1 Q. V5 }# G/ c+ a% I, A2 Y. z% a target_side = "B" if target_side == "B" else "B" # 固定庄(A策略固定): L( \* ~3 D: Q; ]
else:' e; @2 h% d& h) k* B/ j
# 输
' k3 h* a4 ` y6 g profit -= bet
X% \2 D: s- H# ^ stage += 10 \ o: s3 M: a9 q# D7 L
if stage >= len(sequence):
5 m' h4 j2 H) A' l" `5 M stage = 0 # 断缆reset
+ |8 K" W: ~; }: }. Z num_shoes -= 1
7 ^6 r1 K0 G1 n3 f" _% ]
' h+ M' g% v/ w8 p% n7 u) o return profit, commission_paid
2 B* S0 f) ]# L* c7 P/ l1 l& u3 l$ l0 s. H% B S4 \
# 设置命令行解析
9 O) a6 b1 y. l* ydef main():" W, C6 P p1 I: J
parser = argparse.ArgumentParser(description="Simulate Baccarat strategy with commission on/off.")
& o/ a& \) k- u8 {3 z: ]( J parser.add_argument('--commission', choices=['on', 'off'], default='on', help="Enable or disable commission on banker wins.")4 U$ t/ Z: D1 r
parser.add_argument('--shoes', type=int, default=1000, help="Number of shoes to simulate.")
2 k4 o. w3 B9 s; [" [7 p9 s
' Q9 C% ~% f( y args = parser.parse_args()
: H; @& j9 w* ?7 k + Y* x4 [+ U7 K& I- I. W% g5 q( S
# 抽水开关:开启或关闭8 |+ d Y5 a. j5 x9 b
commission_on = args.commission == 'on'! s1 x; L1 O! ~% L! `5 N
+ O( m# N) L) F, u& N% v. [. t result, commission = simulate_strategy_A(num_shoes=args.shoes, commission_on=commission_on)
2 w5 P' s b! C3 z5 U f print(f"最终盈利: {result:.2f}")' Q1 ]4 x+ G) E5 a, k6 q& J
print(f"累计抽水: {commission:.2f}")' y1 B0 G. f* _+ v: I; E
; y8 P2 z: Z; N) t' E, H% v' h+ f
if __name__ == "__main__":4 t& e0 N1 i4 d# }, U. P. z4 ~
main()( _8 T& j F4 [" d+ G
1 s! X1 `, d" x2 Z
" R' V; q2 N0 Y: s% x5 C
步骤 2. 运行4 c9 h5 L: l( b5 G5 m2 k" o% e
; U6 T# i4 Y8 ^ h8 \* K4 c# p在命令行里进入文件所在的文件夹,例如:5 ]1 V4 E0 h/ T2 s) h4 C
cd C:\Users\你的名字\Desktop
' J8 h$ D* E+ J2 N0 M! M+ b: Wpython baccarat_sim.py, u" c$ O# K! R1 A
8 T% ~1 Y2 V# u0 I7 N3 g
输出会显示:: p$ b& G) {; E* R d8 Q2 F! U
1 y$ ]6 P* m& T5 e. O6 F/ Z7 C$ s累计盈亏: xxx
% }" L, v9 x* e2 ]7 u累计抽水: yyy) t2 H4 O. a' P* O, _
-------------------------------------
; N# {& G+ Q' o4 h实例:试跑3次, 3 v6 F5 E) _3 c
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
- o" ~! |$ G8 A8 ]/ y5 h最终盈利: -5360.35 , W5 f" z T3 t4 r* T
累计抽水: 5176.35
* ~2 o$ v8 T, a* CC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py 4 K, ^; H; ?) g* l
最终盈利: -5661.65 9 i1 I9 F6 r4 S
累计抽水: 5174.65
3 |2 ~& z$ r9 Q( Q3 _8 D* RC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
) M" Q7 D* G" T! d i7 `最终盈利: -4244.50
; ?6 F7 x9 N3 y6 M3 }1 A- U; K累计抽水: 5176.50, N6 T3 M3 s! J& F/ O5 Z
, D+ W2 a5 P' b/ k5 O; h说明你的 Python 已经能正常跑模拟了。结果也很有参考性:' ^3 Y# M0 k( u+ H# P+ f6 {2 F1 P7 F
: {; ^( _+ n! T$ v! {; M# Q累计抽水固定在 ~5175 左右 → 这和你设置的「抽水开关 ON」一致,因为你每手下注金额相同(例如 8 单位),程序是按 Banker 抽 5% 计算的,所以长期下来,抽水会稳定在一个范围。# L4 A6 Z( {4 t
1 M9 E, o0 T' l( F, w/ q9 Y最终盈利为负数(-5360、-5661、-4244)→ 这说明在 100,000 局的模拟中,哪怕加上和局不计,下注方向固定,数学期望依然是亏损。3 D0 H+ i @/ O7 P9 X5 ]/ ?! ~
这条缆不能直接用,用了会输。必须改缆法,或改缆法并且改下注规则。
: T. x6 |9 d5 ]人们喜欢举例盈利,有吸引或牛逼的效果。。。用亏损的例子,可以真实告诉你,道阻且长不容易。
$ _1 t. V8 b X0 C, L* r但是别沮丧,办法总比困难多。只是,你自己悟的,是最好的。
4 x2 F' ~% }/ q) v% o/ i: q3 T3 v8 A
启发,,,可以变更缆法,改变庄闲比例,指定胜负路。。。。(待续) |
|