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提及“状态转移矩阵”,我感觉还是很麻烦,或许是我未得要点?