找回密码
 欢迎注册
楼主: nnd

[原创] 落英局

[复制链接]
发表于 2013-5-11 10:50:39 | 显示全部楼层
1# nnd
应该强调从风吹来时开始计时,之后落花

没太明白。只需强调 黑白花 相邻的两次落地的时间间隔是均匀分布的随机数 就行吧。



BTW,据我所知,桃树不可以长的这么高大的啊,
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2013-5-11 12:33:22 | 显示全部楼层
10# wayne

概率论一般是不计算时间的,只计算事件。hujunhua,跟时间混在一起的概率论分支,有吗?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2013-5-29 13:41:16 | 显示全部楼层
从风吹的那一刻起,红花落在棋盘上的时间间隔为1~5秒的随机自然数,白花的间隔为1~10秒的随机自
然数。
请问100秒内,红白桃花四手成弈的概率是多少?
注:红花,白花,红花,白花依次落在棋盘上为四手成弈

模拟的结果大约为80.6%

评分

参与人数 1金币 +1 经验 +3 收起 理由
KeyTo9_Fans + 1 + 3 还是小。正解应该是$0.8143362367241267$。

查看全部评分

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 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
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 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$。

至于代码是否完全正确无误,只能由编程者自己把握,非编程者是很难代劳的。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2013-6-3 18:54:12 | 显示全部楼层
15# KeyTo9_Fans

佩服。准确值是怎么算的呢?我算不出来
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 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$分布服从[1,5],[1,10]的均匀分布。
于是接下来,我们考虑$S_n$ 的概率分布
  1. GatherBy[Sort@Tally@Flatten@Table[i+j+k+s-p-m-n-t,{i,5},{j,5},{k,5},{s,5},{t,10},{n,10},{m,10},{p,10}],Sign[#[[1]]]&]
复制代码
算得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}

评分

参与人数 1经验 +3 收起 理由
KeyTo9_Fans + 3 到最后岂不是“几乎都小于0”?

查看全部评分

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 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$楼)。

评分

参与人数 1金币 +12 鲜花 +12 收起 理由
wayne + 12 + 12 Fans才华横溢,简直要溢成灾了(之前的没显示 ...

查看全部评分

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2013-6-6 20:24:02 | 显示全部楼层
给出状态转移矩阵后就可精确求值了:

matrix.png
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2013-6-6 23:54:53 | 显示全部楼层
17# wayne
Sn的三个概率值之和始终为1,不会出现“都几乎小于0” 的。
我算到S4的时候,突然间意识到Si和Sj不是独立的,所以戛然而止。
================
不过,倒是可以带出一个新的问题,就是红花和白花各自落英100个回合之后,红花总共所花时间大于白花总共所花时间 的概率是多少。
================
还是Fans整出的世外桃源之说 传奇而新颖,而且,而且脉络非常清晰,很适合于编程实现,只是仍然不方便理论计算吧?
================
mathe提及“状态转移矩阵”,我感觉还是很麻烦,或许是我未得要点?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-4-30 23:23 , Processed in 0.045794 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表