|
|
楼主 |
发表于 2025-10-31 11:15
|
显示全部楼层
本帖最后由 Banker 于 2025-10-31 11:17 编辑
) C( X8 X4 g/ S5 @' W3 S
5 o+ N2 h/ k, Q可用Excel,逐手模拟过程(但 Excel 跑不了 100000 靴,会非常卡)。
& x$ ] A: T4 j5 X; @Excel 更适合 直观小样本测试,Python 才能跑大样本,Python 可以试试N万-1亿靴,10亿靴,有没有没必要?你高兴就好。" n1 ^: V' Q; O v. f
. B5 ?0 S% x' ]* B在你电脑上运行 Python 模拟器 (版本3.0以上,若没有,在Python官网下载安装)
( C/ Y, E: x: Q9 e" w: x. i* B假设你已经安装了 Python 3.x(在命令行里输入 python --version 或 py --version 看看有没有)。
$ I) k& U$ Y1 R, x: a先写一个最基础的 百家乐投注策略模拟器(自己定义的规则)。
1 Z u- J; X b) W
( B3 _3 _* I" R2 x! @) }$ j步骤 1. 新建一个 Python 文件7 w9 e0 `8 c$ a+ u1 ]
打开记事本(或 VSCode、Notepad++ 都行,我用记事本)# J/ B3 u" m% ~" C! x
把下面的代码复制进去。
. I6 J/ ^& W: E1 [( q& m1 _( n保存成 baccarat_sim.py (注意后缀是 .py)。
! f! h% `) X! L I
7 P2 I) s8 H/ i+ `& limport random0 [; C6 ^0 L+ ^/ _
import argparse
4 E. R8 v/ ]* F! q$ {4 x5 n3 w5 s" y t$ t$ d3 u8 m5 k; N
# 初始化鞋子
! H) Y" M: Z' H: f+ Adef init_shoe(decks=8):
+ S: o8 X1 `9 x/ R # 每副牌52张,8副共416张' i) v+ h d- U+ a8 _ _/ f. K9 A6 h
shoe = []4 n9 S7 x( F1 T m/ a
for _ in range(decks):
* h9 A6 X* ?7 L4 D# p5 u shoe += ['P'] * 24 + ['B'] * 24 + ['T'] * 4 # 简化:庄24, 闲24, 和4
+ C0 v7 |* u. A: U random.shuffle(shoe)
2 q2 o( X" J1 A: I return shoe
3 Z2 h* M6 t$ |7 C0 [" {: f& ?4 @* K
9 q$ |/ S* e9 N! K9 J1 ~4 N. G# 发一手
% |( D+ [3 s( j5 F! A/ Mdef deal_hand(shoe):: O- ]+ V8 K% }8 I, \2 ~
if len(shoe) < 6:
) s3 E6 `6 W5 y5 l# A: [! _6 i shoe[:] = init_shoe(), `. ^1 f* h' N* K8 N+ ?" U
return shoe.pop()- ^: v" R6 J% C, I* ~/ @8 ]
( N1 B2 A4 }0 g0 J/ B. N
# 模拟下注法 A
" z# z! \# [; adef simulate_strategy_A(num_shoes=1000, commission_on=True):
9 P3 `( }$ I8 I( j. w profit = 0- D' R2 d3 ~5 A- O" O5 f/ _
commission_paid = 0- ?8 w: N2 m; V% A; y
shoe = init_shoe()
" U7 k8 v7 A# O4 ?/ i( u' {" v 6 n" m7 M/ H. W
# 策略参数+ f% Q9 R- c2 L6 R6 ~5 ^8 v! {
sequence = [1, 2, 3, 5, 8, 13, 21] # 示例进级" b" ~+ Q5 }. x" J5 Q$ V. }
stage = 0
' Q2 d; ~) i& t. Z; ^ target_side = "B" # 起手投注庄
7 g) g# ?7 r6 f' a# M2 x {8 [: |/ J3 i" c6 H9 \4 y" ~
while num_shoes > 0:
+ _2 p8 \$ ]' q: {$ f9 \5 O result = deal_hand(shoe)
2 s/ W. e4 u- s; R9 Y) P5 M. y! N. U/ G' }
if result == 'T': ! v! l" W3 W3 L, Z; l( V+ X
# 遇到和,不输不赢,重投
% y1 m% }7 U. [6 D/ x3 N continue0 G5 h+ |( r' H8 x2 ?
7 L% D6 q# r3 g- `0 n bet = sequence[stage]
4 B, |. Z2 z/ H2 q. {0 G3 L
* ~: [* Y; y: ~7 Q; M# b if result == target_side: C' h$ L2 O" W. Z& \
# 赢 s T! B3 ] F% y5 T* a5 M) t& }
win_amount = bet
5 Y$ q9 _& i/ y, |& |6 F; S if target_side == "B" and commission_on:
! [6 B5 ~2 ]+ ^+ x* [& R win_amount *= 0.95 # 庄赢扣5%抽水
, O" q( t1 l6 X commission_paid += bet * 0.052 y a3 s$ S; ?) `
profit += win_amount! ?& t, r3 O- ^ a$ G
stage = 0 # reset% ], ~# e/ O( u: V: m
target_side = "B" if target_side == "B" else "B" # 固定庄(A策略固定)
6 n6 P! Z5 L' @' Q( v! t. H* a else:
; B+ R. Z) l0 l: U, M # 输
7 y' J1 F* a6 O# B profit -= bet
" w+ O6 P% K, p7 m5 j( q stage += 1+ W! }: D) y( h' g2 Q8 }; C$ D
if stage >= len(sequence):
4 o& _! d" h9 f6 H stage = 0 # 断缆reset. q, r+ d( x/ \$ D' o3 f, U+ O
num_shoes -= 15 U% O% m# n: j7 Z: `
- {( J9 K8 U) N return profit, commission_paid
) c: A; B- t% k# {$ d" |! f9 h1 d( [' X) s- c3 Q1 J& F% q" Y% D' {
# 设置命令行解析 N# E; c& f, J' L" H
def main():
y2 ]: h, \( B. }; }0 R( G; ?1 H parser = argparse.ArgumentParser(description="Simulate Baccarat strategy with commission on/off.")
$ r; d% n3 P3 t M" y, n& B parser.add_argument('--commission', choices=['on', 'off'], default='on', help="Enable or disable commission on banker wins.")
8 i& B, l# ^ S& W8 `! G parser.add_argument('--shoes', type=int, default=1000, help="Number of shoes to simulate.")
: u2 x. u% p6 w. \/ S
' T8 i2 u& t2 \, |4 I4 I- l6 J args = parser.parse_args()" A3 \% d" p& [0 P0 X* @! k6 A
3 i4 N3 ?4 F9 d5 J. ` # 抽水开关:开启或关闭
$ m" B" N- i+ |& o/ V0 N! E2 J commission_on = args.commission == 'on'
/ f/ y" |) l0 y6 \7 J
; b6 c) [4 s) o( g7 b( m; P5 ^ result, commission = simulate_strategy_A(num_shoes=args.shoes, commission_on=commission_on)
4 D& i+ C- d3 l print(f"最终盈利: {result:.2f}")6 g, }6 `9 Y2 y5 Q
print(f"累计抽水: {commission:.2f}")3 ^7 z1 u/ z* K, V' v; v. V: L# B
: N6 Y; g7 \/ ^' \+ vif __name__ == "__main__":
5 h7 N8 X( X# Q. M( \/ d main()
: r, z& _+ B ?
3 G/ `, Y2 J* A8 D! T3 z, Z. |; x9 J# n4 D1 p( N9 w
步骤 2. 运行" d" b! P! [9 H) Z/ b
$ @. x; B. N# B
在命令行里进入文件所在的文件夹,例如:- ~8 R8 n6 T7 v& Z4 _
cd C:\Users\你的名字\Desktop
6 e3 y1 u/ l M: {; t9 e; ^python baccarat_sim.py# z: a3 m$ L3 O/ H
. D2 v' L0 s( b7 N; t8 p3 ~- Q输出会显示:! y. j+ C* G" t
. V6 f3 ^1 K6 @- }累计盈亏: xxx( T/ v- I" H; K( `* P& r# g
累计抽水: yyy
* V' _5 i" j& N( t9 p-------------------------------------
/ W5 B' U9 D: a实例:试跑3次,
' r- h" L) h0 @* U& AC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
- Z1 b' H1 W+ C: w) g最终盈利: -5360.35 8 H7 H' P- z. u; c: P z; a% e0 Z
累计抽水: 5176.35 ) F6 O. Y1 d; s" y5 _: |7 I# [5 h- D
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
8 R0 Q0 Y+ U% h1 ~" `# ^7 L5 g最终盈利: -5661.65
9 z+ e. r+ T/ Q( Z8 f累计抽水: 5174.65 9 j9 I% C, C) ?9 @; Z: o7 V& `
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
- b/ S9 N4 ^* c* @* w" v$ ]$ n7 J最终盈利: -4244.50
* ]5 F$ B+ p' \累计抽水: 5176.505 f7 n! s( a5 R; A
! o7 g( u: a5 b- i! B说明你的 Python 已经能正常跑模拟了。结果也很有参考性:
1 k8 R! [. u( x, W: G/ h2 G& C7 h
: u/ |% }* l: ~7 @$ B累计抽水固定在 ~5175 左右 → 这和你设置的「抽水开关 ON」一致,因为你每手下注金额相同(例如 8 单位),程序是按 Banker 抽 5% 计算的,所以长期下来,抽水会稳定在一个范围。
) W9 c M) E6 M# y% T3 b0 W; a/ t) p4 ?+ ~
最终盈利为负数(-5360、-5661、-4244)→ 这说明在 100,000 局的模拟中,哪怕加上和局不计,下注方向固定,数学期望依然是亏损。; ^! L1 N. n$ i" p) N7 d; W9 m
这条缆不能直接用,用了会输。必须改缆法,或改缆法并且改下注规则。* J5 t! R& X7 s J; Y
人们喜欢举例盈利,有吸引或牛逼的效果。。。用亏损的例子,可以真实告诉你,道阻且长不容易。0 `) _6 S" d6 p& W# h" g; B
但是别沮丧,办法总比困难多。只是,你自己悟的,是最好的。
5 T: }) ?8 P% i( f
; T3 h! s+ O; R* }. i启发,,,可以变更缆法,改变庄闲比例,指定胜负路。。。。(待续) |
|