|
|
楼主 |
发表于 2025-10-31 11:15
|
显示全部楼层
本帖最后由 Banker 于 2025-10-31 11:17 编辑 ! H- p( |. h2 z5 |
0 W) Y3 F4 V3 E ^: o* C! s0 W. E可用Excel,逐手模拟过程(但 Excel 跑不了 100000 靴,会非常卡)。% D1 @4 X% v( z$ ^( }- E
Excel 更适合 直观小样本测试,Python 才能跑大样本,Python 可以试试N万-1亿靴,10亿靴,有没有没必要?你高兴就好。
& x* ^ k8 [1 L$ N. c- B- U
- w9 Q* N0 J! Y9 ?# _在你电脑上运行 Python 模拟器 (版本3.0以上,若没有,在Python官网下载安装), z$ h& M& K5 o( {
假设你已经安装了 Python 3.x(在命令行里输入 python --version 或 py --version 看看有没有)。# E& ~% T5 a; ] ]1 q
先写一个最基础的 百家乐投注策略模拟器(自己定义的规则)。
- f3 k" Y& [( t3 q1 m: a9 W; Z1 f! i4 e( E+ ?0 P
步骤 1. 新建一个 Python 文件9 V- l$ w; D! T/ j
打开记事本(或 VSCode、Notepad++ 都行,我用记事本)
) ~0 V' }, G' A4 Q把下面的代码复制进去。
& ?9 S$ ?/ q6 u2 o6 X- D9 L保存成 baccarat_sim.py (注意后缀是 .py)。
5 y1 x7 z3 F1 J% |/ t
8 a* n% y2 p2 X( }7 yimport random1 |9 L) m# B+ t# j7 c
import argparse
2 v! o3 W6 a/ {6 }4 ^
1 E6 G1 t K1 U% R& _# y# 初始化鞋子
0 Q, g0 i5 L! K) |0 odef init_shoe(decks=8):. y, d5 t$ b5 U
# 每副牌52张,8副共416张
5 k5 {0 \' K& c, F3 ]. u shoe = []
" h* t7 I. m5 q1 ] for _ in range(decks):
- t o8 X9 J; X; _7 f3 n shoe += ['P'] * 24 + ['B'] * 24 + ['T'] * 4 # 简化:庄24, 闲24, 和4
6 S1 g1 h. l) l random.shuffle(shoe); k- O* y8 q$ h" y- `; C8 v7 V
return shoe9 _/ I* M: L0 Y$ c. h0 {
2 G5 A" ^! P _6 p; x# }- g# 发一手
, \/ C" A4 A- r2 w0 t' tdef deal_hand(shoe):9 b( K2 X+ {% B* Y, B- b
if len(shoe) < 6:
6 ]4 f' f* ?2 g) z shoe[:] = init_shoe()6 Z0 v9 x: C% g% | c- S/ Z/ M& u
return shoe.pop()
1 v r2 U6 O' R3 M$ C: b# i& n6 p0 z3 a* m, s
# 模拟下注法 A7 }% b$ Y6 q. W$ l+ ^3 Y3 M
def simulate_strategy_A(num_shoes=1000, commission_on=True):
+ e$ Q5 u: T) L" J7 J profit = 0
6 T# ~& X4 y, u" A& l commission_paid = 0
& @: X9 L* y2 z0 W( W9 U7 \8 k shoe = init_shoe()4 v$ x) A8 B. L# v r) F4 q
6 g/ t& c/ q! O, \0 J3 V% b/ I" ^* B
# 策略参数
; L" X. z- y) I2 ?, F! X sequence = [1, 2, 3, 5, 8, 13, 21] # 示例进级# Z8 s) D( @" a4 Y
stage = 0
. p+ Z2 k, C. n8 k0 e target_side = "B" # 起手投注庄
& m! u/ B9 L1 F, S& h( `+ f8 t( Z U. S9 K. @/ z; r1 {
while num_shoes > 0:$ j- J) A0 B7 B2 h6 m
result = deal_hand(shoe)
7 H/ u# v! E" A- w2 O+ ^0 s6 i6 c/ E) M! J n
: f( J6 e0 K+ c% q if result == 'T': 3 T# _! F' ?- N6 y
# 遇到和,不输不赢,重投8 D6 s) U% \. J; I6 R
continue: a# a7 f2 T8 p6 s: V" ]: Z
0 K7 L4 S5 T) p2 J" x+ J bet = sequence[stage]; x# w/ `: ~! e* p% D8 A
" G# ?+ q& D2 T* k" p" b# \' Q if result == target_side:
- G' ~% g9 [! e& a! g # 赢
* @) U5 X% d- m6 H9 P6 v win_amount = bet, R6 w- }1 s4 d4 l2 K
if target_side == "B" and commission_on:
& [7 a; g8 Q3 C win_amount *= 0.95 # 庄赢扣5%抽水# n3 p9 @9 Q% r) f* Q
commission_paid += bet * 0.05
' @0 T# u& b5 l9 \ profit += win_amount; `9 d4 Y @1 x ]5 b2 U2 L
stage = 0 # reset
' l4 S, U+ y5 j target_side = "B" if target_side == "B" else "B" # 固定庄(A策略固定)5 [7 [# P! B8 r$ Z4 b
else:' b1 L" k. n$ Z* r2 D
# 输, H \/ }6 `* c
profit -= bet
& c% q# I7 @8 Y) {2 R9 S2 J( b stage += 1) Z( I. v) l6 C1 G
if stage >= len(sequence):# ~" |, R$ t; I/ }5 x
stage = 0 # 断缆reset- X* n$ l6 R( E. S
num_shoes -= 1
8 J; k' w; b% z, C6 g
, ?6 z7 F. N& h2 _5 k# r return profit, commission_paid% q/ J- W/ R- r m! p
; i4 V& c) A/ a' @
# 设置命令行解析. j* }" o1 o1 Z. Q$ q( w, _
def main():
$ n: |! m5 P1 n/ ~8 B$ v parser = argparse.ArgumentParser(description="Simulate Baccarat strategy with commission on/off.")3 r* [( y* h, V3 b7 v
parser.add_argument('--commission', choices=['on', 'off'], default='on', help="Enable or disable commission on banker wins.")
' R; p$ {/ t2 o3 C" d" ] parser.add_argument('--shoes', type=int, default=1000, help="Number of shoes to simulate.")8 T s# r- ?+ e% J8 d
' I" K- V$ t6 M. D' @: x args = parser.parse_args()) ^$ l# K$ g2 f% H* o
4 y, W. y! I7 ~) o0 k/ k # 抽水开关:开启或关闭
5 A# {+ z( l6 \ commission_on = args.commission == 'on'
+ _( a4 [8 V7 d7 M7 f- G$ X0 H% @) \ , S/ y+ C S3 V
result, commission = simulate_strategy_A(num_shoes=args.shoes, commission_on=commission_on)
7 W+ H* R, M8 j: Q% L print(f"最终盈利: {result:.2f}")" R, F: Y6 d& p0 _! ~
print(f"累计抽水: {commission:.2f}")! V! @1 |- ~( B) B
! K" Y) E/ L7 S& G f# J
if __name__ == "__main__":; @0 T- J f4 \& }
main()
- J: o3 I3 h- h! Q# w: Y: Y7 Y# v: }5 j- Y7 |( }1 J0 E- p
" Y' I, P& X1 n' U8 V1 m& c
步骤 2. 运行; N& G4 O$ A7 J* b+ l1 _
/ M/ O& y5 f" J! h* y; [' X0 b+ ?
在命令行里进入文件所在的文件夹,例如:5 o! S( X. }1 q+ `% w
cd C:\Users\你的名字\Desktop
% Q6 J! y4 [8 Q) S6 I$ Vpython baccarat_sim.py
* f: y$ v' J% a" b4 }" l! I
9 N! q$ d# E# f" l输出会显示:
8 B/ Q$ V8 F% w: O8 `; [# z* X$ ]- S
2 F/ d: X( Y/ `8 Z累计盈亏: xxx
# b8 d Q* u; `# K( E累计抽水: yyy
7 N0 r& b- S' b8 _5 o4 g-------------------------------------
6 |8 B; x* h/ ] j7 |6 n实例:试跑3次, 6 U+ P0 }$ A4 X: v9 Y; S# x% y
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py 7 p& ]) y0 }# A; o- a3 E2 U
最终盈利: -5360.35 $ q7 U7 U. R+ a- v5 c
累计抽水: 5176.35 5 \" @, R" _' l; w' y
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py + D" t" q7 y3 m5 ?! R
最终盈利: -5661.65 1 S/ b1 i2 z6 s4 L
累计抽水: 5174.65 5 ~ W7 s$ G6 n% Y% J+ W
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py % y$ K" u/ d! `0 z
最终盈利: -4244.50
$ v, Y8 j. v# a/ e& \累计抽水: 5176.50" r& I+ Z/ K* g- }5 \0 l( ?% j
' j2 I/ F1 U; F. J' V+ o说明你的 Python 已经能正常跑模拟了。结果也很有参考性:. L. L0 x5 _5 f7 f2 }% O
3 l6 u9 i- L$ T9 R+ r( {( \8 p
累计抽水固定在 ~5175 左右 → 这和你设置的「抽水开关 ON」一致,因为你每手下注金额相同(例如 8 单位),程序是按 Banker 抽 5% 计算的,所以长期下来,抽水会稳定在一个范围。
; ~7 y; H2 B6 Y# @" R9 ~9 }. ?
( ?. p3 R6 F" m3 i6 N+ h! h% `最终盈利为负数(-5360、-5661、-4244)→ 这说明在 100,000 局的模拟中,哪怕加上和局不计,下注方向固定,数学期望依然是亏损。, P7 o7 M" i/ H* R; ~0 [
这条缆不能直接用,用了会输。必须改缆法,或改缆法并且改下注规则。
( C' ^" c: K6 g) G% R/ Z人们喜欢举例盈利,有吸引或牛逼的效果。。。用亏损的例子,可以真实告诉你,道阻且长不容易。
2 P0 h6 ?+ ?5 d B) p但是别沮丧,办法总比困难多。只是,你自己悟的,是最好的。: B& X6 D& @- A$ z5 s" V
1 o7 z+ p: P l( i m E
启发,,,可以变更缆法,改变庄闲比例,指定胜负路。。。。(待续) |
|