|
|
楼主 |
发表于 2025-10-31 11:15
|
显示全部楼层
本帖最后由 Banker 于 2025-10-31 11:17 编辑 ( ^( F) e& Y8 r5 D7 R |
- ~3 f! Z( v0 [; z
可用Excel,逐手模拟过程(但 Excel 跑不了 100000 靴,会非常卡)。
$ m( y* R, O2 e3 H* b- _ z* `Excel 更适合 直观小样本测试,Python 才能跑大样本,Python 可以试试N万-1亿靴,10亿靴,有没有没必要?你高兴就好。& D, S3 u a, s& s0 e
I, w$ y# R, H' D' S在你电脑上运行 Python 模拟器 (版本3.0以上,若没有,在Python官网下载安装)
6 }% Q# ^( E* t' l+ j, n* a假设你已经安装了 Python 3.x(在命令行里输入 python --version 或 py --version 看看有没有)。
. v9 y% c( w' z \+ ?. U先写一个最基础的 百家乐投注策略模拟器(自己定义的规则)。% {. T7 Q5 J' ~ j
5 d7 Z( u6 c% H! P; t7 p# s步骤 1. 新建一个 Python 文件
. @3 y* _0 o0 A" q& M; ~* }打开记事本(或 VSCode、Notepad++ 都行,我用记事本)" X, |$ }; ^) y! [) w
把下面的代码复制进去。6 z( ~& {! c" R! ^1 `9 F- K) E
保存成 baccarat_sim.py (注意后缀是 .py)。" F% b3 u# |$ K7 c
' h, Y, U# L1 s
import random
5 k" b+ Y' M* Bimport argparse0 f! t+ X, j* O# [
( D! V; ?3 W6 `( t' K# 初始化鞋子
" z! ?/ ~7 m/ [1 c' R# t8 Idef init_shoe(decks=8):/ \7 Q! J) @" v& W
# 每副牌52张,8副共416张# F* s2 _; r1 d6 T8 k! C) W. J" G
shoe = []! ~8 S! r5 n5 ~2 ? X- z
for _ in range(decks):
5 C7 U- v( I, K4 ^% R shoe += ['P'] * 24 + ['B'] * 24 + ['T'] * 4 # 简化:庄24, 闲24, 和4
/ ?+ j' Y- W- ? J. b& k random.shuffle(shoe)3 _. p1 r1 `* Y7 j% n
return shoe
# I1 R# ~4 X' {$ V- P9 P# X6 k# C" s7 x& Q* @4 i$ Q
# 发一手
/ X7 \* p+ R) }def deal_hand(shoe):% v6 }" J) q1 F! w% J: d# [
if len(shoe) < 6:
7 v. } S$ L( x7 J8 L shoe[:] = init_shoe()
; v2 t! H: W! Z return shoe.pop()5 M9 p, {0 W/ B
$ `8 N, E7 a; {% }4 o& w# 模拟下注法 A8 g" Y: z8 n# c8 Y, q
def simulate_strategy_A(num_shoes=1000, commission_on=True):5 K8 V1 `* k r9 B/ G
profit = 0" U8 P$ h( o5 @7 Q' F
commission_paid = 0
7 M6 o4 L. y9 n' k shoe = init_shoe()
; X E3 F3 G7 D8 Y# e4 U
5 e# A% q8 G5 W% B% F; x # 策略参数
! b' ~+ b5 z4 |6 k% v: U sequence = [1, 2, 3, 5, 8, 13, 21] # 示例进级
( U: y+ ^5 B) K3 [5 H stage = 0+ e; f- L7 j# T/ p
target_side = "B" # 起手投注庄
% }# w& h( E' B A+ T6 z& A# p0 C4 c
while num_shoes > 0:- `# z/ o$ m8 o- i
result = deal_hand(shoe)
7 {, ~7 U1 m% F0 ]
* R0 c! F! Q, H6 I if result == 'T': 1 R9 O3 `$ x7 Y! ?
# 遇到和,不输不赢,重投
2 {4 L8 J x; `; c, n, ] continue
% W: H# j9 }5 [& H: Z* a, L+ [) T8 r: w# l9 b
bet = sequence[stage]
0 y4 J# \" K$ Q
7 o. a& J0 V* q( Z if result == target_side:; w5 B9 X }/ o9 }% v. N. Z
# 赢
/ s- f% H1 P# ~- G) v) J win_amount = bet
' L0 {1 C4 P3 m1 c. h+ o- z if target_side == "B" and commission_on:) l. O: R7 i; X9 H$ y* |/ ~
win_amount *= 0.95 # 庄赢扣5%抽水
7 A, B0 B9 L( I+ `4 y commission_paid += bet * 0.05
% d2 S$ g% ]+ q. N# c* ^3 h2 l profit += win_amount2 \5 z5 e P# x6 N2 J( |, k
stage = 0 # reset+ R: ?% c. }8 N0 p& Q6 U
target_side = "B" if target_side == "B" else "B" # 固定庄(A策略固定)
( G# K3 [/ _) L* ]. m1 v else:/ X9 r8 L4 e, W8 S
# 输8 G$ v/ C& K7 _' B! f
profit -= bet. M" X; ` T: i. z1 u& T& f; c
stage += 1! ?' P, N- q* m; I
if stage >= len(sequence):
- h$ J/ R' N* `& y4 _ stage = 0 # 断缆reset
' z8 {# u; B2 g: s* O+ u num_shoes -= 1
+ t4 G# H$ {% q6 `9 f; x$ M; _1 ^- N( }3 R1 Y
return profit, commission_paid6 c8 i. K" J2 k7 m. f( F! M; f. _
' U+ m, V- f- i8 l' s2 Z# 设置命令行解析% {' `0 {2 T- q/ X: b" @$ q! [, u
def main():
$ e5 n* X! a% H Y+ _ parser = argparse.ArgumentParser(description="Simulate Baccarat strategy with commission on/off.")- Y% r/ E' A: |! ~! {
parser.add_argument('--commission', choices=['on', 'off'], default='on', help="Enable or disable commission on banker wins.")5 {2 F% u2 v( h
parser.add_argument('--shoes', type=int, default=1000, help="Number of shoes to simulate.")
! p- W9 p* H: m1 K # o3 U% D0 Z2 g6 w5 K
args = parser.parse_args()6 W) v2 E0 g- V) }6 w( M
, H" l" U9 h3 q/ t4 j0 f, d. G8 W2 g # 抽水开关:开启或关闭! [% F1 ]) Y2 k0 l
commission_on = args.commission == 'on'
3 b2 C1 N# e1 M. f1 {7 X% l 4 f# v+ {. l6 Z8 }/ v
result, commission = simulate_strategy_A(num_shoes=args.shoes, commission_on=commission_on)/ p* d: s7 z" S: c
print(f"最终盈利: {result:.2f}")' |# H) C" N6 l' i1 C/ b
print(f"累计抽水: {commission:.2f}")& S' w' L0 M {( A
+ p3 F2 {8 r8 D! a" S3 Gif __name__ == "__main__":3 B% E/ E5 Z: l2 J3 ~/ M$ W
main()0 s1 x7 R5 L& k& N
. d7 L! ?/ R6 Y
4 m* m4 \' f/ o- b
步骤 2. 运行 Z b* ~+ P! \5 I
/ T' g* y. f; V在命令行里进入文件所在的文件夹,例如:/ j2 {) u5 ]* A! @) C
cd C:\Users\你的名字\Desktop' T6 ^3 C/ F4 c% H) Y
python baccarat_sim.py0 s& s" o9 r# Q+ H9 m
6 j& K' I' F; ?# F& ]$ N0 v: s& J) q
输出会显示:- k% v& U# ~$ K0 V% l# b
W- F( t3 ~! |3 Z- e
累计盈亏: xxx6 W. E0 r) z: Y
累计抽水: yyy
' Y8 b6 T, F" v* V3 f-------------------------------------
) z( E% V, H7 I. o实例:试跑3次,
- W( Y( d1 X3 F5 GC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py ; o) p/ [0 l1 S# q/ A" U; p
最终盈利: -5360.35 5 K" }/ S" t3 S7 R" K7 g
累计抽水: 5176.35 6 J5 T$ M- b" W0 |4 i
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py - b+ w& p m. x( f: A6 G
最终盈利: -5661.65
! d# n% i. Q4 u# \( z累计抽水: 5174.65 1 F+ W2 a) _2 a# E$ q. m5 T
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py 9 _4 l3 B9 l E$ e
最终盈利: -4244.50
8 O) O- y$ `, @* c5 w' h/ h* i累计抽水: 5176.50
; W/ [# s: h; s) u) h0 \4 X1 {, l7 s7 i" U- V+ E* [; I
说明你的 Python 已经能正常跑模拟了。结果也很有参考性:: M; e& L4 x* f t) ~; F
% r) k8 n& g. I7 R8 @0 X
累计抽水固定在 ~5175 左右 → 这和你设置的「抽水开关 ON」一致,因为你每手下注金额相同(例如 8 单位),程序是按 Banker 抽 5% 计算的,所以长期下来,抽水会稳定在一个范围。* V w4 H* U7 C- L
& v6 L3 h% j" E! b
最终盈利为负数(-5360、-5661、-4244)→ 这说明在 100,000 局的模拟中,哪怕加上和局不计,下注方向固定,数学期望依然是亏损。0 v7 b; U) d% n3 _
这条缆不能直接用,用了会输。必须改缆法,或改缆法并且改下注规则。) W' V9 `; d# A2 v/ |( W
人们喜欢举例盈利,有吸引或牛逼的效果。。。用亏损的例子,可以真实告诉你,道阻且长不容易。
4 ]% v7 A( C/ P( b8 \; e* f但是别沮丧,办法总比困难多。只是,你自己悟的,是最好的。% E7 }! I( N8 z) A' z, f# }8 ~
1 M: d3 Z- n, s, N
启发,,,可以变更缆法,改变庄闲比例,指定胜负路。。。。(待续) |
|