智游城

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: shfe
打印 上一主题 下一主题

请教一个概率问题

[复制链接]
41#
dfu2012 发表于 2012-7-18 17:19:32 | 只看该作者
本帖最后由 dfu2012 于 2012-7-18 17:43 编辑
老陈 发表于 2012-7-18 14:59
建议检查一下23楼的公式推导过程。
我看:P(N)=W*P(N+1)+L*P(N-1)
好像:P(N)=L*P(N+1)+W*P(N-1)


我是这么定义的:

每次下注量为1万,N为当前的筹码量N万(单位是万),P(N)指以当前的筹码量打到120万的几率。
P(N+1)指以(N+1)万的筹码量打到120万的几率。
P(N-1)指以(N-1)万的筹码量打到120万的几率。


W为每次下注赢的几率,L为每次下注输的几率,W=1-L. 这个例子W=0.49375, W比L小。

那么,当筹码量为N万的时候下注1万,赢的时候(W)筹码变成N+1,输的时候(L)筹码变成N-1。

那么,对应的P(N)=W*P(N+1) + L*P(N-1), 这个思路不知道有没有问题,请指教。

如果依据上述思路得出的公式是合理的话,经过等价变形,则有:

  P(N+1)-P(N)=(L/W) * ( P(N)-P(N-1) ),
  P(N)-P(N-1)=(L/W) * ( P(N-1)-P(N-2) ),
  ........
  P(3)-P(2) = (L/W) * ( P(2)-P(1) ),

另外 :P(1)=P(2)*W+P(0)*L,P(0)=0,所以 P(2)=P(1)/W

全部相加:P(N+1)-P(2)=(L/W)(P(N)-P(1))   。
          P(N+1)=(L/W)*P(N)-(L/W)*P(1)+(1/W)*P(1)=(L/W)*P(N)+P(1)

即:    P(N+1)=(L/W)*P(N)+P(1)                    。。。。公式1

全部相乘:P(N+1)-P(N)=((L/W)^(N-1))  *  (P(2)-P(1))=((L/W)^N)*P(1)

即:   P(N+1)-P(N)= ((L/W)^N)*P(1)        。。。。公式2

实际上用公式2就可以直接得出: P(N+1)=P(1)* (1+(L/W)+(L/W)^2+....+(L/W)^N )

即:                                          P(N+1)=P(1)*(1-(L/W)^(N+1))/(1-L/W))       。。。公式3           

不熟悉的用公式1带入公式2,也可以得出公式3.

已知:  P(120)=1,

        P(N)=P(N)/P(120)= ( 1-(L/W)^N ) / (1-(L/W)^120)


以上是推导过程。





42#
老陈 发表于 2012-7-18 17:51:56 | 只看该作者
本帖最后由 老陈 于 2012-7-18 04:08 编辑

W为每次下注赢的几率,L为每次下注输的几率,W=1-L.
那么,当筹码量为N万的时候下注1万,赢的时候(W)筹码变成N+1,输的时候(L)筹码变成N-1。
那么,对应的P(N)=W*P(N+1) + L*P(N-1), 这个思路不知道有没有问题,请指教。

不敢指教,共同讨论。
我的思路是你想用P(N)打到120万,那P(N)的来源有两种可能,一是在N+1时输了,二是N-1时赢了。不知道想偏了没有。
43#
老陈 发表于 2012-7-18 18:00:03 | 只看该作者
本帖最后由 老陈 于 2012-7-18 04:06 编辑

再说计算。
我改变每次下注数额,1000,5000,20000,30000,50000,结果都非常接近,只是计算时间不一样,少算得慢,多算得快。老霍在17楼提到“与押多少无关”,我认为有手续费时照样适用。定性地说,如果玩家能用改变下注数额提高实现达到目标的概率是不可能的,因为每一次下注都是一个独立事件。
改用胜率来计算,无手续费,结果也都非常接近我原来的计算结果。

44#
dfu2012 发表于 2012-7-18 18:19:48 | 只看该作者
本帖最后由 dfu2012 于 2012-7-18 18:35 编辑
老陈 发表于 2012-7-18 17:51
W为每次下注赢的几率,L为每次下注输的几率,W=1-L.
那么,当筹码量为N万的时候下注1万,赢的时候(W)筹 ...


我们思路好像不一样。

P(N)是指当手里有N万筹码的时候,后面无论输还是赢,也就是说无论输赢的路径如何,到达120万的几率。

“我的思路是你想P(N)打到120万,那P(N)的来源有两种可能,一是在N+1时输了,二是N-1时赢了。不知道想偏了没有。”,
(当筹码为N+1无论后面输赢都可能打到120万,当筹码为N-1无论后面输赢也都可能打到120万。)

P(N)的来源的确有两种,分别来自P(N+1)和P(N-1).

P(N+1)指在筹码量为N+1时包含了所有可能到达120万的路径的几率,不考虑路径的细节,只知道从这里到120万的几率是P(N+1)就好。

P(N-1)指在筹码量为N-1时包含了所有可能到达120万的路径的几率,不考虑路径的细节,只知道从这里到120万的几率是P(N-1)就好。

W和L指的是当筹码量为N的时候,有W的几率变成N+1筹码,有L的几率变成N-1的筹码,

当筹码量为N的时候,到达120万的几率是P(N), 经过1轮下注,会出现两种路径:

A)有W的可能性走N+1这条路。如果走N+1这条路,那么到达120万的几率是 :  W*P(N+1)


B)有L的可能性走N-1这条路。如果走N-1这条路,那么到达120万的几率是 :  L*P(N-1)

这个路径选择,基于当筹码为N万时候的胜负,胜(W)则走P(N+1)这条路,输(L)则走P(N-1)这条路,

总的路径就是:W*P(N+1)+L*P(N-1),  这个结果和P(N)应该是等价的,即:

P(N)=W*P(N+1)+L*P(N-1)


这里计算的内涵和EV计算的会有点不一样,这里算的是各种路径的可能,不知道我这么理解对不对。


45#
dfu2012 发表于 2012-7-18 18:29:38 | 只看该作者
本帖最后由 dfu2012 于 2012-7-18 18:52 编辑
老陈 发表于 2012-7-18 18:00
再说计算。
我改变每次下注数额,1000,5000,20000,30000,50000,结果都非常接近,只是计算时间不一样, ...


无手续费,如果转换成丢硬币模式,从公式看,和下注的金额无关,到达120万的几率都一样。

有手续费,如果转换成丢硬币模式,从公式看,我觉得,每次下注的金额最终似乎还是会影响到达120万的几率。

这个几率虽然影响了,但EV始终还是负的,就是说无论对手如何调整,比如增加下注额,即便他到达120万的几率提高了,但他总的EV无论如何都是负的,只是负的少一些。

如果说手续费模式下,下注金额的改变不会影响到结果,那或许更能说明手续费模式和硬币模式也许是不等价的(虽然每次下注的EV是一样的,但到达120万的概率计算不等价)。

不知道这么理解对不对。

还有种可能:公式的推导有问题,可能是哪里缺了点什么,我再想想哪里出问题了。
46#
Howard 发表于 2012-7-18 21:29:14 | 只看该作者
dfu2012 发表于 2012-7-18 11:00
那题我理解上有点歧义,所以没仔细看。

原题目:巴萨和皇马德比238场,没有任何一个队连输5场过, 我们 ...

有思路就是胜利。有想法就是突破。
47#
Howard 发表于 2012-7-18 21:54:07 | 只看该作者
@老陈  @dfu2012

有手续费的时候,我觉得是要影响成功概率的。可以考虑一个极端的例子辅助思维:手续费不是2.5%,而是99%。

这种条件下,显然凭直觉即可判断,100万玩到101万,每次压1万是几乎不可能的,因为胜利等同于是(赢的次数比输的次数的100倍还多100次),这肯定比破产的几率要小得多。但是如果上来就100万全押,则确保有50%的成功概率。

用公式算,却不考虑下注大小,因为下注大小不是公式组成部分。这可能就是边界问题造成公式不适用。

48#
Howard 发表于 2012-7-18 22:35:57 | 只看该作者
刚才用老陈的程序跑了一下10万次次的 “100万打到200万”,在Intel Core i5-2450M 2.50GHz的CPU,4G内存上跑了两分钟左右,结果如下:

Win:7190次
Lose:92810次
Total:100000次
Win Rate:7.19%
与公式的计算结果非常吻合。

老陈你为什么算的不一样呢?我贴一下全部程序(Excel 2010 VBA ):


Const BUYIN = 1000000
Const CASHOUT = 2000000
Const BET = 10000
Const COMMITION = 0.025
Const CALCTIMES = 100000

Dim Wins, Lose As Long

    Private Sub Button1_Click()
        Wins = 0
        Lose = 0
        Dim I As Long
        For I = 1 To CALCTIMES
            Bacc
        Next
        Label1.Caption = Wins
        Label2.Caption = Lose
        Label3.Caption = Wins + Lose
        Label4.Caption = Format(Wins / (Wins + Lose), "###.00%")
        Label5.Caption = Format(Lose / (Wins + Lose), "###.00%")
    End Sub
   
    Sub Bacc()
        Dim Chips As Long
        Chips = BUYIN
        Dim Ws As Double
        While True
            
            Ws = Rnd()
            If Ws < 0.5 Then
                If Chips > BET Then
                    Chips = Chips - BET
                Else
                    Lose = Lose + 1
                    Exit Sub
                End If
            Else
                If Chips >= BET Then
                    Chips = Chips + BET * (1 - COMMITION)
                Else
                    Chips = Chips + Chips * (1 - COMMITION)
                End If
               
                If Chips > CASHOUT Then
                    Wins = Wins + 1
                    Exit Sub
                End If
            End If
        Wend
    End Sub
49#
老陈 发表于 2012-7-19 01:28:43 来自手机 | 只看该作者
本帖最后由 老陈 于 2012-7-18 11:30 编辑
Howard 发表于 2012-7-18 08:35
刚才用老陈的程序跑了一下10万次次的 “100万打到200万”,在Intel Core i5-2450M 2.50GHz的CPU,4G内存上 ...


老霍运行的程序我有两处疑点,一变量Chips应该定义为Double,这个问题对结果有影响,可能影响不大。二是在语句WS=Rnd()前我用了一条初始化随即数序列的语句,没有这条语句产生的WS可能不是随机数。老霍可以监视一下WS变量的值验证一下,我用Visual Basic .Net 确实如此。
50#
Howard 发表于 2012-7-19 02:48:22 | 只看该作者
本帖最后由 Howard 于 2012-7-19 02:48 编辑

@老陈,

第一, Chips数是Double还是Long,如你所说,应该影响不大。我觉得Long反而更符合现实情况一点,最小筹码不会低于1元。但无论用哪个,结果都应该相差很小

第二,我删掉那句话的原因是:暂时没有在VBA中找到对应的语句,只好删了。但根据结果判断,无论是120万还是200万,程序运行结果都和公式计算结果吻合,随机数应该没造成什么麻烦。我的猜测是,Rnd()产生随机数不是真随机的情况,只有大规模科学运算和大型网络游戏之类的才需要考虑,像我们这种规模的程序,Rnd()已经足够随机。

        即使如此,我还是试图验证了一下。检验一个序列是否符合随机数特征,是很麻烦的事儿。我只能先看ws变量在0.5以上和在0.5以下的次数比较。经过十万次的模拟,结果如下(200万或输光):
Win:7190次
Lose:92810次
Total:100000次
Win Rate:7.19%
ws大于0.5:49998
ws小于0.5:50002

如此接近,可看作满足随机数了。另外这次模拟居然7190次跟上次分毫不差,不知道是巧合还是奇怪。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|智游城论坛

GMT+8, 2024-9-20 19:42 , Processed in 0.047947 second(s), 8 queries , Redis On.

Powered by Discuz! X3.2

© 2001-2012 Comsenz Inc.

返回顶部