|
|
楼主 |
发表于 2025-10-31 11:15
|
显示全部楼层
本帖最后由 Banker 于 2025-10-31 11:17 编辑 8 O7 w/ u' C( ?1 v4 J' u
! `8 \; y+ ?$ V9 k( z- t* r可用Excel,逐手模拟过程(但 Excel 跑不了 100000 靴,会非常卡)。9 ^! I' G% [6 X: {0 C* P
Excel 更适合 直观小样本测试,Python 才能跑大样本,Python 可以试试N万-1亿靴,10亿靴,有没有没必要?你高兴就好。3 `% |0 T; V/ s, n' G! `' X. O5 j6 R
' B! t& p' t6 x" B在你电脑上运行 Python 模拟器 (版本3.0以上,若没有,在Python官网下载安装)% |- _ _% ~: Y* V+ f4 V
假设你已经安装了 Python 3.x(在命令行里输入 python --version 或 py --version 看看有没有)。+ f8 T0 _0 C( h; v3 L/ q7 d* W
先写一个最基础的 百家乐投注策略模拟器(自己定义的规则)。+ K; F- @9 r- V
- A$ |: m* a0 r. W) y! M; b/ C
步骤 1. 新建一个 Python 文件% `8 C8 ?4 K( D
打开记事本(或 VSCode、Notepad++ 都行,我用记事本)6 O1 Q5 z+ G- @6 v$ ?
把下面的代码复制进去。
9 K5 s$ y" q, r3 Q1 a. P1 c/ c保存成 baccarat_sim.py (注意后缀是 .py)。. N! s7 {$ y1 S) S( P1 v. _
2 C- H* u3 r/ j; v9 _" Z# o
import random3 b* W9 S% Q3 i+ c4 |% l; x
import argparse
+ f9 c& n& ]) `, \2 g- R& o
9 D* V5 J4 U/ ~8 s2 q! _ V# 初始化鞋子8 m* |0 m# h$ u4 b
def init_shoe(decks=8):
/ _. }1 Z |! E! r # 每副牌52张,8副共416张
) S1 f- ^" Y' y shoe = []6 }9 \; y; S' R& }
for _ in range(decks):
& M' ?! ]8 I* o2 [: I5 ^$ Q shoe += ['P'] * 24 + ['B'] * 24 + ['T'] * 4 # 简化:庄24, 闲24, 和4
( o. _' u% D9 U. O7 m; d2 ?' G8 u random.shuffle(shoe), U9 j. l4 D/ Z
return shoe
+ F6 w2 A/ d; ~% T, F$ c9 A& z0 n2 y+ H* x6 x
# 发一手
4 A9 x1 e9 K) d1 F) a# {def deal_hand(shoe):
5 g1 x( B4 ~) H if len(shoe) < 6:
+ \, {* J8 ]0 x: Z" h' E" G9 b% p shoe[:] = init_shoe()
! W, X9 {5 V+ ?: h, I5 c return shoe.pop()5 r0 h6 o1 P& F8 F% L) T% S; o9 o
% [, E7 C6 m* q5 R1 ?2 l1 {# 模拟下注法 A9 f* _$ _+ T, V4 }& E' A* B
def simulate_strategy_A(num_shoes=1000, commission_on=True):
$ F! N7 u% U" I6 h4 b profit = 07 z9 h1 {2 c5 J6 M" L
commission_paid = 0
. r7 t$ Z% O; d P; G$ K shoe = init_shoe()
1 p$ @9 O$ @1 P6 M1 a( J ' d! B( B+ g1 }0 a# Y4 M7 c: I
# 策略参数9 Q, h8 k* u' V0 |/ C$ C) E
sequence = [1, 2, 3, 5, 8, 13, 21] # 示例进级
, d! p9 J) r' ]; {. e stage = 09 o: f5 f+ l4 P- o+ b6 U
target_side = "B" # 起手投注庄0 f" w9 i. t/ C
( v/ B3 t' j) ?9 r- t6 D. E, w while num_shoes > 0:) b! A/ _4 W9 o
result = deal_hand(shoe)
/ w$ o4 U2 V" O4 L* m; T
8 `9 A, p0 o e7 u if result == 'T': 5 W5 p. D/ a8 t. e8 C, T
# 遇到和,不输不赢,重投
, `7 F+ s6 V* R continue# D9 u @ F. w ~+ K
8 u! y3 F7 b+ r- y" [1 k bet = sequence[stage]0 N9 z! f6 `; b# M0 s2 t+ t: z
# W. ^- A; v3 ~3 L7 }/ `) ]: H
if result == target_side:( s+ R& u4 H5 Z, W9 F s: f4 i6 E/ l
# 赢
0 R- }+ p, Q+ d& x' c# l win_amount = bet( Q( m* [; Z: Y( |# _
if target_side == "B" and commission_on:- p, \ N' U) i* M
win_amount *= 0.95 # 庄赢扣5%抽水
$ N1 d* P; e, t' q% ]$ O commission_paid += bet * 0.05
- ^9 ~8 F! `( c profit += win_amount6 N$ E2 L+ j& E
stage = 0 # reset
1 G/ ]6 K8 u8 P% n1 j% ~4 ~ target_side = "B" if target_side == "B" else "B" # 固定庄(A策略固定)* Y% s$ u! u6 q& U9 v A4 k
else:% q. G; l, o/ ?3 o# r( }1 }
# 输
& d6 S7 n& }$ _% \( e/ x profit -= bet
! A+ t" ~+ Y# {+ w1 c. i" I( \ stage += 1! h9 r3 }9 L; R7 h! [
if stage >= len(sequence):; o- P1 H/ | x. t/ E( u. h
stage = 0 # 断缆reset; _% b3 s7 `$ i- @; T; {( X8 p
num_shoes -= 1
1 k2 h" z2 H" J! m z# f( B7 e R/ v2 r4 }, |
return profit, commission_paid
! ^; w6 l7 z9 K7 c4 v; z' e& |1 |' F
2 r' I% x! O" U! n% X) t# 设置命令行解析
/ d2 K% y; U& n! Fdef main():
2 b( ?$ J9 P: f3 Y9 P R parser = argparse.ArgumentParser(description="Simulate Baccarat strategy with commission on/off.")' Y, t! x- h! J5 d. f
parser.add_argument('--commission', choices=['on', 'off'], default='on', help="Enable or disable commission on banker wins.")
3 d: a2 R0 {! _) z parser.add_argument('--shoes', type=int, default=1000, help="Number of shoes to simulate.")
3 t$ `' G5 P- i+ m6 {- F
1 t* r1 m1 F- `4 N. S0 I; p& k( T0 { args = parser.parse_args()5 J* P7 ^. A" y c
/ f1 y r( `; W # 抽水开关:开启或关闭
% u- [! t1 p2 K3 l" K* ^ commission_on = args.commission == 'on'5 F! L& m, c7 {! F
, m' [9 H, r% @8 B. S7 S% O result, commission = simulate_strategy_A(num_shoes=args.shoes, commission_on=commission_on)" S) Q4 j7 F: b6 b+ Q6 _
print(f"最终盈利: {result:.2f}")6 j9 Y9 H& X3 j1 T: I
print(f"累计抽水: {commission:.2f}")
2 `( L+ T0 j$ h& Q
9 Q6 k$ Z+ q( F5 Q" f! e( rif __name__ == "__main__":/ g- ?- \/ T0 A
main()' a9 I) L! p2 N: N: g2 V: p4 A4 d
: C* ~9 x+ v2 `. n
! l5 T8 \9 p; A8 B, {步骤 2. 运行2 z# X/ G* S- n
; i. ^/ v( A8 J: [% P在命令行里进入文件所在的文件夹,例如:
! H% F, _8 @4 }cd C:\Users\你的名字\Desktop6 Q# l! R( z" w P4 A
python baccarat_sim.py9 T. g! q7 S9 h3 a
# p; E7 `. r0 D, s" Q; X1 ~输出会显示:7 C, x: {$ [ S+ w8 o
& Z& F0 g$ K, k& I$ H5 _0 a7 l% E累计盈亏: xxx
: x6 k: c! |5 Y累计抽水: yyy
8 g- t- y, s* ~. S6 h+ n-------------------------------------; F \& L z. I* v
实例:试跑3次,
( d0 [+ s9 I/ O3 oC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py . v9 @! S6 \3 ~- j0 y n2 T
最终盈利: -5360.35
, Z2 G7 H8 C- {累计抽水: 5176.35 9 K* `( e1 r. S6 }4 n8 Y% [
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py $ L" G) A! D! w
最终盈利: -5661.65
0 u9 q" O+ Y" c2 ?) q' x累计抽水: 5174.65 * K6 j% K' V! ]; X: l$ W! j- j9 {
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py - C% d8 u* t* u- ^1 ?/ m
最终盈利: -4244.50 5 I Z: e( H) {+ c8 x
累计抽水: 5176.50
) }, H& a. p u4 E! _9 S' }- }! X3 [ i
说明你的 Python 已经能正常跑模拟了。结果也很有参考性:
/ A( z* R0 ]/ H% q0 D1 K
! Q3 T; c$ U9 D- v累计抽水固定在 ~5175 左右 → 这和你设置的「抽水开关 ON」一致,因为你每手下注金额相同(例如 8 单位),程序是按 Banker 抽 5% 计算的,所以长期下来,抽水会稳定在一个范围。3 X/ O k; z* ^/ E2 ~ X- F) P1 k
# v, c: v! T# y' U最终盈利为负数(-5360、-5661、-4244)→ 这说明在 100,000 局的模拟中,哪怕加上和局不计,下注方向固定,数学期望依然是亏损。7 d1 M" i, j( h8 F8 F
这条缆不能直接用,用了会输。必须改缆法,或改缆法并且改下注规则。
- }* s8 ~+ E7 Y人们喜欢举例盈利,有吸引或牛逼的效果。。。用亏损的例子,可以真实告诉你,道阻且长不容易。
) I: ?4 x# b/ h3 x" A* U但是别沮丧,办法总比困难多。只是,你自己悟的,是最好的。
- K+ K/ K( s. N V) w% A
a1 n# ^: R. \5 _! J$ T启发,,,可以变更缆法,改变庄闲比例,指定胜负路。。。。(待续) |
|