|
|
楼主 |
发表于 2025-10-31 11:15
|
显示全部楼层
本帖最后由 Banker 于 2025-10-31 11:17 编辑
& C( g r2 E. I. c& `
+ N+ w/ X3 i0 @, S- S9 P可用Excel,逐手模拟过程(但 Excel 跑不了 100000 靴,会非常卡)。
& |5 k- R {( W$ G5 OExcel 更适合 直观小样本测试,Python 才能跑大样本,Python 可以试试N万-1亿靴,10亿靴,有没有没必要?你高兴就好。
q# t; n3 h: @ [2 O, V8 u% [7 \' a: g
在你电脑上运行 Python 模拟器 (版本3.0以上,若没有,在Python官网下载安装)
9 ?$ c- y; C- S5 {- x假设你已经安装了 Python 3.x(在命令行里输入 python --version 或 py --version 看看有没有)。
. [" a- g3 M9 j! r1 x先写一个最基础的 百家乐投注策略模拟器(自己定义的规则)。7 y0 [, N$ _/ S$ u, z
' H8 i Y. i; j6 _1 i步骤 1. 新建一个 Python 文件
8 F2 y* [: @' T' R* E9 Q( J打开记事本(或 VSCode、Notepad++ 都行,我用记事本)
' T! k" U! Q$ j" `" U把下面的代码复制进去。
( ~6 }: C+ s3 H2 x; l- U保存成 baccarat_sim.py (注意后缀是 .py)。8 \& a8 v H7 ?" m
- W/ X. _4 ~% k' v2 p. N/ p
import random! G! J \8 Y: O6 c# A
import argparse& o/ B7 L1 T9 V3 C4 `7 x- A
" P$ ?- i- W$ S; o" L1 ~# 初始化鞋子
* b, r) [4 o: u+ d, K" c) odef init_shoe(decks=8):
1 Z ?. v/ v% x* I/ { # 每副牌52张,8副共416张
, i& x9 }& x, ~7 L+ i% T shoe = []
7 ~& X: [- b% y4 |- H, o% E3 F for _ in range(decks):+ k w, o* f& E, i3 M
shoe += ['P'] * 24 + ['B'] * 24 + ['T'] * 4 # 简化:庄24, 闲24, 和40 i8 _: J% U- u- _# u4 P2 Z& ]
random.shuffle(shoe)' i0 d; Y9 I& K: O. ~- ^/ _
return shoe
; c0 U9 [& O; j6 B6 [4 l7 [2 E3 P& @7 k }- Z3 e7 T
# 发一手2 K$ o: n& | Z" f5 W+ S0 E/ e* J
def deal_hand(shoe):
5 Z Z: W8 U( a( z if len(shoe) < 6:) b/ i% c( |, A/ v
shoe[:] = init_shoe()1 d+ i% Z& X, [- X4 A; W
return shoe.pop()
Z3 Y. u8 j' }+ Z, J, ^. N. `5 s$ ~- |3 G2 B. v0 u
# 模拟下注法 A9 X, i3 W3 I* w( N# P3 |6 z# i& U
def simulate_strategy_A(num_shoes=1000, commission_on=True):7 |# i7 j# B' g2 r4 l6 u6 i8 z
profit = 0
, \3 j7 u) Z- P commission_paid = 0
' l I6 i' _2 ]: J! t% ] shoe = init_shoe()/ i4 f2 {3 N( c8 I
7 l8 V( B6 Y/ N, |7 M* V
# 策略参数
0 Q# @ |4 A) ]: E4 c; Q sequence = [1, 2, 3, 5, 8, 13, 21] # 示例进级
. u# y& C! U) \6 `% M/ s: [ stage = 0
3 l) B* z7 F6 j& j1 |0 V& I7 A% R target_side = "B" # 起手投注庄. H; J0 x, F# \8 k- I# S8 }" Z- u; h! l
! X$ A3 o" ^( T. l$ Y+ ?! L& z
while num_shoes > 0:3 i- S; C+ k9 v
result = deal_hand(shoe)
; O, I M, ^, C& X! ?& c/ \& u. M I
if result == 'T':
: f* [3 Y! f- G" g$ v* Q# W # 遇到和,不输不赢,重投
- b$ w; G" E) ]; r continue' |( b, o/ F/ N$ G
7 x" k$ k, s( }- U3 {
bet = sequence[stage]% z$ u3 C$ s; F" l% S
8 R7 ?1 ~2 O; [. y- B0 t A6 @ if result == target_side:9 t* r3 U+ ~9 f0 h/ J
# 赢
: M( {& B' a* p/ Z9 N; V win_amount = bet
1 ^# {9 H0 r! m$ }1 z& k5 I if target_side == "B" and commission_on:
6 F5 @& c! X8 u, N" j u q win_amount *= 0.95 # 庄赢扣5%抽水, X, m7 m8 e( W2 j* W
commission_paid += bet * 0.05
) H1 U2 T% @8 K7 u4 I$ W4 N profit += win_amount! h, U& K3 h7 b6 ~
stage = 0 # reset; Z9 I8 Q6 b* |- z/ m* T
target_side = "B" if target_side == "B" else "B" # 固定庄(A策略固定)
+ U! g3 @' s, t2 W* y/ D else:
6 }6 z, Y- y( R$ l' {/ m; i$ d # 输5 h- W. ~. E+ H" e/ j; p; {
profit -= bet& d, z$ E+ Q. K: M3 p2 Q
stage += 1
. L! m4 B& K' I8 z if stage >= len(sequence):
6 W2 h$ O4 ~5 x stage = 0 # 断缆reset
+ q9 _( q% Q2 t4 p$ r num_shoes -= 1
7 | `' g6 f* Q4 `1 \! {( h; `; X: U
return profit, commission_paid/ C3 e& i$ \+ C( o
+ w0 N2 G2 T3 }- `! g# 设置命令行解析3 y, ~3 S) R9 L' `$ b/ }
def main():
8 p4 c5 p7 x0 j) ?3 v& F parser = argparse.ArgumentParser(description="Simulate Baccarat strategy with commission on/off.")5 V7 O( X6 T: J0 D7 i
parser.add_argument('--commission', choices=['on', 'off'], default='on', help="Enable or disable commission on banker wins.")" M2 r1 J( |& t$ Q5 v
parser.add_argument('--shoes', type=int, default=1000, help="Number of shoes to simulate.")- w% X0 X+ J6 a& v6 ~# H
" U/ S: l5 I1 ^# l: S% y# u# S. B
args = parser.parse_args()
- {9 y& S% ?' {# \
. T# L/ E0 Q$ \& l& b # 抽水开关:开启或关闭
% N+ w3 e9 E. K* f commission_on = args.commission == 'on'4 @. P6 T% ?' f0 m! [! l
9 e/ L$ K0 E/ G( l
result, commission = simulate_strategy_A(num_shoes=args.shoes, commission_on=commission_on)
* @# X/ X! e4 s: D/ B print(f"最终盈利: {result:.2f}")
! z# ~, w1 ^( L- L* I0 _5 |; W# `/ { print(f"累计抽水: {commission:.2f}")! ~$ |! z" @3 t' m4 E: c
# H' A H# z5 P; p, D, p" Y, m
if __name__ == "__main__":
' R o- h9 \2 c, ` main(), `1 K: w/ f- C# t
7 X1 Z! d+ B8 H6 B- l/ @
& I C' R. i7 \; T; [步骤 2. 运行
1 R& K( v( O, l' [, D
" f+ {$ N2 s4 {8 ~在命令行里进入文件所在的文件夹,例如:/ ~0 F! [ U, G, T/ Y9 h( D
cd C:\Users\你的名字\Desktop
- O+ y% \) j) }5 G kpython baccarat_sim.py
8 |+ Z$ Z$ ^9 Z: _6 p' ]6 a$ \7 P- F9 j/ z9 Z: j1 p
输出会显示:" C0 F G; u* m4 P/ C# [
+ |1 q. _( g) b% o6 p5 v累计盈亏: xxx
8 B( s7 H* c0 U" ^( c7 B累计抽水: yyy
7 {4 a. q* L8 t1 B6 Q p' ]-------------------------------------
+ w/ q' ]7 _5 T实例:试跑3次,
& n9 U% W+ t7 v7 m, RC:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
+ x) Z2 J0 u; P最终盈利: -5360.35 2 x* W3 L6 Q0 ?& B
累计抽水: 5176.35 ! G3 {; d7 Z, A; m# M$ m
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py 2 R2 Z* T5 P& X- @# t/ t7 X) ]
最终盈利: -5661.65 * {. o: O4 P8 G! f! Z7 K
累计抽水: 5174.65 . l8 v2 r( [2 u8 |$ E C
C:\Users\Shenhua\Desktop>F:\胜者为王\66-58研发\baccarat_sim.py
( ?' z8 R6 B/ n' I. y# Y最终盈利: -4244.50 9 o1 k# K* [" J7 ]! w
累计抽水: 5176.50/ W$ @6 j3 k7 U( l8 `
' H9 U# O1 w# p2 y说明你的 Python 已经能正常跑模拟了。结果也很有参考性:0 ~2 k `1 l3 C$ W# F/ p
' Y; E' }9 V$ q& K
累计抽水固定在 ~5175 左右 → 这和你设置的「抽水开关 ON」一致,因为你每手下注金额相同(例如 8 单位),程序是按 Banker 抽 5% 计算的,所以长期下来,抽水会稳定在一个范围。
7 D6 C6 {% x3 \9 W3 |) H/ s- k1 y$ ]! V+ @( y8 {9 n
最终盈利为负数(-5360、-5661、-4244)→ 这说明在 100,000 局的模拟中,哪怕加上和局不计,下注方向固定,数学期望依然是亏损。) I/ S: f/ C0 i: t" K
这条缆不能直接用,用了会输。必须改缆法,或改缆法并且改下注规则。8 g2 z f& j; L, V2 Y
人们喜欢举例盈利,有吸引或牛逼的效果。。。用亏损的例子,可以真实告诉你,道阻且长不容易。, p$ X2 h% [! _1 j
但是别沮丧,办法总比困难多。只是,你自己悟的,是最好的。
) }5 T* m8 _" i b( n
: s6 j: x4 ?) F$ i0 e$ X启发,,,可以变更缆法,改变庄闲比例,指定胜负路。。。。(待续) |
|