wayne 发表于 2013-5-11 10:50:39

1# nnd
应该强调从风吹来时开始计时,之后落花
没太明白。只需强调 黑白花 相邻的两次落地的时间间隔是均匀分布的随机数 就行吧。



BTW,据我所知,桃树不可以长的这么高大的啊,:lol

nnd 发表于 2013-5-11 12:33:22

10# wayne

概率论一般是不计算时间的,只计算事件。hujunhua,跟时间混在一起的概率论分支,有吗?

nnd 发表于 2013-5-29 13:41:16

从风吹的那一刻起,红花落在棋盘上的时间间隔为1~5秒的随机自然数,白花的间隔为1~10秒的随机自
然数。
请问100秒内,红白桃花四手成弈的概率是多少?
注:红花,白花,红花,白花依次落在棋盘上为四手成弈

模拟的结果大约为80.6%

nnd 发表于 2013-6-3 14:17:15

这个代码是用excel的VBA写的。算出了一个模拟值。帮我看看有没有问题?

Sub yaokong()
    ‘from http://110.76.45.160/thread-76-1-1.html
    Dim tRed(100), tWhite(100) As Integer 'the time when dropping
    Dim tRedWhite(200) As Integer
    '{0,0,1,1,2,1,0} means white dropping,white dropping,red dropping,red,same time dropping,red dropping,white dropping,
   
    Dim lRed, lWhite As Integer         'drop times
    Dim i, j, N, K As Integer
    Dim iR, iW As Integer
    Dim eFF As Integer
   
    Dim N1, K1 As Single
   
   
    N = 0
    K = 32767
    For j = 1 To K
      lRed = 0
      lWhite = 0
   
      
      For i = 0 To 99
         tRed(i) = 0
         tWhite(i) = 0
      Next i
      
      tRed(0) = Int(5 * Rnd) + 1
      While tRed(lRed) < 99
            lRed = lRed + 1
            tRed(lRed) = Int(5 * Rnd) + 1 + tRed(lRed - 1)
      Wend
      If tRed(lRed) > 100 Then lRed = lRed - 1
      
      
      tWhite(0) = Int(10 * Rnd) + 1
      While tWhite(lWhite) < 99
            lWhite = lWhite + 1
            tWhite(lWhite) = Int(10 * Rnd) + 1 + tWhite(lWhite - 1)
      Wend
      If tWhite(lWhite) > 100 Then lWhite = lWhite - 1
      
      iR = 0
      iW = 0
      
      i = 0
      While i < lRed + lWhite 'white 0,red 1
            If tRed(iR) > tWhite(iW) Then
               tRedWhite(i) = 0
               iW = iW + 1
               i = i + 1
            ElseIf tRed(iR) < tWhite(iW) Then
                tRedWhite(i) = 1
                iR = iR + 1
                i = i + 1
            Else
                tRedWhite(i) = 2
                i = i + 1
                tRedWhite(i) = 2
                i = i + 1
                iR = iR + 1
                iW = iW + 1
            End If
      Wend
      
      eFF = 1
      i = 0
      While eFF = 1 And i < lRed + lWhite - 2
         If tRedWhite(i) = 1 And tRedWhite(i + 1) = 0 And tRedWhite(i + 2) = 1 And tRedWhite(i + 3) = 0 Then
            eFF = 0
         End If
         i = i + 1
      Wend
      
      If eFF = 0 Then N = N + 1
      
    Next j
   
    For i = 0 To lRed
      Sheets(1).Cells(i + 1, 1).Value = tRed(i)
    Next i
   
    For i = 0 To lWhite
      Sheets(1).Cells(i + 1, 2).Value = tWhite(i)
    Next i
   
    For i = 0 To iW + iR
      Sheets(1).Cells(i + 1, 3).Value = tRedWhite(i)
    Next i
   
    N1 = N
    K1 = K
   
    MsgBox ("N=" & N & "" & "K=" & K & "" & "N/k=" & N1 / K1)
   
End Sub

KeyTo9_Fans 发表于 2013-6-3 16:49:52

代码是否正确,只能由编程者自己把握,非编程者很难代劳。

你只要告诉我:

1、你的模拟次数是$32767$次;
2、每次模拟均为$100$个时刻。
3、对于每次模拟的每个时刻:红花落记为$0$,白花落记为$1$,同时落记为$2$,没有花落就不记;
4、如果记录中出现$0101$,则成弈,否则不成弈。

我就知道你的算法是对的了。

至于模拟结果$0.806$与真实值$0.8143362367241267$之差有$0.008$,

当模拟次数仅为$32767$时是可以接受的。

我也做过$1$个模拟,次数为$10^10$,结果为$0.814345$,与真实值之差为$0.000009$。

至于代码是否完全正确无误,只能由编程者自己把握,非编程者是很难代劳的。

nnd 发表于 2013-6-3 18:54:12

15# KeyTo9_Fans

佩服。准确值是怎么算的呢?我算不出来

wayne 发表于 2013-6-5 11:00:36

以时间作限并不能揭示问题本质。
我还是以回合的方式考虑吧,1回合表示红白分别落一次。
设第n回合,红白落地的间隔分别需要r_k,w_k,则我们可以设
S_n=\sum_{k=1}^{n}(r_k-w_k),其中r_k,w_k分布服从,的均匀分布。
于是接下来,我们考虑S_n 的概率分布GatherBy,Sign[#[]]&]算得S小于0,等于0,大于0的概率分布分别是
S1:{7/10,1/10,2/10}
S2:{83/100,1/20,13/100}
S3:{13948/15625,953/31250,2401/31250}
S4:{5810743/6250000,121389/6250000,79467/1562500}

KeyTo9_Fans 发表于 2013-6-6 19:12:36

有一天,Fans来到了一个世外桃园,

没想到竟然在桃园里看到了wayne(在桃园里来回走动)。

桃园里有一堵$10$米长的红墙和一堵$5$米长的白墙,

两堵墙恰好形成了一个直角,如下图所示:

角红红红红红红红红红红



白      W


(“角”=“墙角”,“红”=“红墙”,“白”=“白墙”,“W”=“wayne”)

经过耐心观察,Fans发现wayne在每个单位时间里是按照如下方式走动的:

1、向左上方走$\sqrt{2}$米;
2、如果碰到了红墙,就后退$1$~$5$米(后退$1$米、后退$2$米、……、后退$5$米的概率均为$20%$);
3、如果碰到了白墙,就向右走$1$~$10$米(向右$1$米、向右$2$米、……、向右$10$米的概率均为$10%$);
4、如果碰到的是墙角,就后退$1$~$5$米(后退$1$米、后退$2$米、……、后退$5$米的概率均为$20%$),然后向右走$1$~$10$米(向右$1$米、向右$2$米、……、向右$10$米的概率均为$10%$)。

这个世外桃园非常神奇:

一旦wayne碰到了红墙,就会有$1$片红色的花瓣从天而降,落到wayne的手里;
一旦wayne碰到了白墙,就会有$1$片白色的花瓣从天而降,落到wayne的手里;
如果wayne碰到的是墙角,就会有$1$片红色的花瓣和$1$片白色的花瓣同时从天而降,落到wayne的手里。

而wayne仙人也非常古怪:

1、当手里什么也没有的时候:

如果有$1$片红色的花瓣从天而降:拿着;
如果有$1$片白色的花瓣从天而降:扔掉;
如果有$1$片红色的花瓣和$1$片白色的花瓣同时从天而降:统统扔掉;

2、当手里有$1$片红色的花瓣的时候:

如果有$1$片红色的花瓣从天而降:把原来的红花瓣扔掉,拿新来的;
如果有$1$片白色的花瓣从天而降:拿着;
如果有$1$片红色的花瓣和$1$片白色的花瓣同时从天而降:统统扔掉,包括原来的红花瓣;

3、当手里有$1$片红色的花瓣和$1$片白色的花瓣的时候:

如果有$1$片红色的花瓣从天而降:拿着;
如果有$1$片白色的花瓣从天而降:统统扔掉,包括原来拿着的花瓣;
如果有$1$片红色的花瓣和$1$片白色的花瓣同时从天而降:统统扔掉,包括原来拿着的花瓣;

4、当手里有$2$片红色的花瓣和$1$片白色的花瓣的时候:

如果有$1$片红色的花瓣从天而降:把原来拿着的花瓣统统扔掉,把新的红花瓣拿着;
如果有$1$片白色的花瓣从天而降:拿着;
如果有$1$片红色的花瓣和$1$片白色的花瓣同时从天而降:统统扔掉,包括原来拿着的花瓣;

5、当手里有$2$片红色的花瓣和$2$片白色的花瓣的时候:

如果有$1$片红色的花瓣从天而降:把原来拿着的花瓣继续拿着,新来的不要;
如果有$1$片白色的花瓣从天而降:把原来拿着的花瓣继续拿着,新来的不要;
如果有$1$片红色的花瓣和$1$片白色的花瓣同时从天而降:把原来拿着的花瓣继续拿着,新来的不要。

经过如此细致的一番观察之后,Fans开始思考:

如果wayne的初始位置是随机的(把$5$*$10$范围里的每$1$块空地作为起点的概率均为$2%$),并且手里没有花瓣,
那么经过了$100$个单位时间之后,wayne手里拿着的是$2$片红色的花瓣和$2$片白色的花瓣的概率是多少呢?

Fans从世外桃园回来之后,打开数学研发论坛,发现nnd楼主已经写了$1$个程序($14$楼),模拟了wayne的走法,并把近似结果算出来了($13$楼)。

mathe 发表于 2013-6-6 20:24:02

给出状态转移矩阵后就可精确求值了:

wayne 发表于 2013-6-6 23:54:53

17# wayne
Sn的三个概率值之和始终为1,不会出现“都几乎小于0” 的。
我算到S4的时候,突然间意识到Si和Sj不是独立的,所以戛然而止。
================
不过,倒是可以带出一个新的问题,就是红花和白花各自落英100个回合之后,红花总共所花时间大于白花总共所花时间 的概率是多少。
================
还是Fans整出的世外桃源之说 传奇而新颖,而且,而且脉络非常清晰,很适合于编程实现,只是仍然不方便理论计算吧?
================
mathe提及“状态转移矩阵”,我感觉还是很麻烦,或许是我未得要点?
页: 1 [2] 3
查看完整版本: 落英局