数学中国

 找回密码
 注册
搜索
热搜: 活动 交友 discuz
查看: 7550|回复: 11

投篮投进后再投进概率为 0.8 ,投不进后再投进概率为 0.6 ,求第 n 次投进的概率

[复制链接]
发表于 2014-2-17 11:46 | 显示全部楼层 |阅读模式
这是台湾网友 YAG 发表在“陆老师的《数学中国》园地”的一个帖子,
欢迎大家一起来想想如何解答:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| 发表于 2014-2-17 17:35 | 显示全部楼层

投篮投进后再投进概率为 0.8 ,投不进后再投进概率为 0.6 ,求第 n 次投进的概率

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2014-2-18 10:17 | 显示全部楼层

投篮投进后再投进概率为 0.8 ,投不进后再投进概率为 0.6 ,求第 n 次投进的概率

[这个贴子最后由天山草在 2014/02/18 10:18am 第 1 次编辑] 我用产生随机数来模拟概率的方法求 P(2),结果总是 0.78 左右,不知何故? 程序如下: ';某人投篮,若投进,则下一次再次投进的概率为0.8,若投不进,则下一次投进的概率为0.6,求第 2 次能投进的概率 P(2) 是多少。 ';对于 P(1)=1 和 P(1)=0 分别计算。         Private Sub form_Click()         Open "D:\ssssss\VB3\概率模拟4\p.txt" For Output As 1             Randomize     ';启动随机数发生器         pp = 0         For ii = 1 To 10   ';共计算 10 次,看看每一次得到的 p(2) 的值。     p = 0     For m = 1 To 10000000   ';对于 n=2,做 10000000 次试验求平均,将平均结果作为 p(2) 的值。     s = 0     k = 1  ';k = 1 表示投进, k = 0 表示未投进。     For i = 1 To 2      A = Rnd   ';产生一个大于零、小于 1 的随机正数      If k = 1 Then        If A <= 0.8 Then         s = s + 1         k = 1        Else         k = 0        End If      End If             If k = 0 Then         If A <= 0.6 Then          s = s + 1          k = 1         Else          k = 0       End If      End If           Next i      p = p + s / 2     Next m      p = p / (m - 1)       Print "p(2)="; p       Print #1, "p(2)="; p      pp = pp + p    Next ii      rint "p(2) 的平均结果="; pp / (ii - 1)       Print #1, "p(2) 的平均结果="; pp / (ii - 1)     End Sub ---------------------------------------------------------------- 程序运行结果是: p(2)= .77991945 p(2)= .78000895 p(2)= .7800736 p(2)= .7799828 p(2)= .7800445 p(2)= .7798973 p(2)= .77998225 p(2)= .78006915 p(2)= .7800275 p(2)= .78001895 p(2) 的平均结果= .780002445     [br][br]-=-=-=-=- 以下内容由 天山草 时添加 -=-=-=-=- 为什么与理论结果 0.8 相差 0.02 ?
发表于 2014-2-18 10:25 | 显示全部楼层

投篮投进后再投进概率为 0.8 ,投不进后再投进概率为 0.6 ,求第 n 次投进的概率

[这个贴子最后由天山草在 2014/02/18 10:25am 第 1 次编辑]


如果按 P(1)=0 计算,上述程序的结果是 P(2)=0.66,与理论值 0.6 相差更多,何故?
p(2)= .6600261
p(2)= .6600002
p(2)= .6599373
p(2)= .659959
p(2)= .66004935
p(2)= .6600503
p(2)= .659997
p(2)= .65998635
p(2)= .6599009
p(2)= .6600403
p(2) 的平均结果= .65999468
 楼主| 发表于 2014-2-18 14:26 | 显示全部楼层

投篮投进后再投进概率为 0.8 ,投不进后再投进概率为 0.6 ,求第 n 次投进的概率

    你这程序中,“For i = 1 To 2”对 i 循环了两次,
第一次循环,求出的是第 2 次投篮的结果,第二次循环,求出的是第 3 次投篮的结果。
这两次循环后,你用了一个语句“p = p + s / 2”,这是把第 2 次、第 3 次投篮的结果作了一个平均。
所以,得到的 p 其实是 P(2) 与 P(3) 的平均值,即
   [P(2)+P(3)]/2 = (0.8 + 0.76)/2 = 0.78 。
-------------------------------------------------------------------------------
   如果取 P(1)=0 ,则 P(2)=0.2×P(1)+0.6=0.6 ,P(3)=0.2×P(2)+0.6=0.72 ,  
得到的 p 其实 P(2) 与 P(3) 的平均值,即
   [P(2)+P(3)]/2 = (0.6 + 0.72)/2 = 0.66 。
发表于 2014-2-19 08:00 | 显示全部楼层

投篮投进后再投进概率为 0.8 ,投不进后再投进概率为 0.6 ,求第 n 次投进的概率

噢,确实是错在这里。谢谢陆教授的指点。改正后的程序及运行结果是: '; 某人投篮,若投进,则下一次再次投进的概率为0.8,若投不进,则下一次投进的概率为0.6,求第 2 次能投进的概率 P(2) 是多少。 '; 对于 P(1)=1 和 P(1)=0 分别计算。 Private Sub form_Click() Randomize ';启动随机数发生器 pp = 0 For ii = 1 To 10 ';共计算 10 次,看看每一次得到的 p(2) 的值。 p = 0 For m = 1 To 10000000 ';对于 n=2,做 10000000 次试验求平均,将平均结果作为 p(2) 的值。 s = 0 A = Rnd ';产生一个大于零、小于 1 的随机正数 If A <= 0.8 Then s = s + 1 End If p = p + s Next m p = p / (m - 1) Print "p(2)="; p pp = pp + p Next ii Print "p(2) 的平均结果="; pp / (ii - 1) End Sub ------------------------------------------------------------- 运行结果: p(2)= .800134 p(2)= .7999723 p(2)= .7998947 p(2)= .8000896 p(2)= .7998975 p(2)= .8001652 p(2)= .7999586 p(2)= .7998669 p(2)= .8001014 p(2)= .799909 p(2) 的平均结果= .79999892
发表于 2014-2-19 08:04 | 显示全部楼层

投篮投进后再投进概率为 0.8 ,投不进后再投进概率为 0.6 ,求第 n 次投进的概率

P(1)=0 时的程序,只须改动一句即可: ------------------------------------------------- '; 某人投篮,若投进,则下一次再次投进的概率为0.8,若投不进,则下一次投进的概率为0.6,求第 2 次能投进的概率 P(2) 是多少。 '; 对于 P(1)=1 和 P(1)=0 分别计算。 Private Sub form_Click() Randomize ';启动随机数发生器 pp = 0 For ii = 1 To 10 ';共计算 10 次,看看每一次得到的 p(2) 的值。 p = 0 For m = 1 To 10000000 ';对于 n=2,做 10000000 次试验求平均,将平均结果作为 p(2) 的值。 s = 0 A = Rnd ';产生一个大于零、小于 1 的随机正数 If A <= 0.6 Then s = s + 1 End If p = p + s Next m p = p / (m - 1) Print "p(2)="; p pp = pp + p Next ii Print "p(2) 的平均结果="; pp / (ii - 1) End Sub -------------------------------------------------------- 运行结果是: p(2)= .599995 p(2)= .5997955 p(2)= .6002352 p(2)= .5998175 p(2)= .6001973 p(2)= .5999418 p(2)= .5998131 p(2)= .6002136 p(2)= .5998519 p(2)= .6001624 p(2) 的平均结果= .60000233
发表于 2014-2-19 08:58 | 显示全部楼层

投篮投进后再投进概率为 0.8 ,投不进后再投进概率为 0.6 ,求第 n 次投进的概率

[这个贴子最后由天山草在 2014/02/19 00:57pm 第 2 次编辑] 这个题目可以改成更有趣的形式,就是不规定第一次是否投进,问投充分多次以后,每一次投入的概率是多少。    结果也是 0.75。 '; 某人投篮,若投进,则下一次再次投进的概率为0.8,若投不进,则下一次投进的概率为0.6,问:投篮充分多次以后,每次能投进的概率 P(n) 是多少。 Private Sub form_Click() Randomize ';启动随机数发生器 A = Rnd ';产生一个大于零、小于 1 的随机正数 If A <= 0.5 Then k = 1 If A > 0.5 Then k = 0 s = 0 For n = 1 To 1000000 ';投篮总次数 A = Rnd ';产生一个大于零、小于 1 的随机正数 If k = 1 And A <= 0.8 Then ';上次投中,本次也投中 s = s + 1 k = 1 End If If k = 1 And A > 0.8 Then ';上次投中,本次未投中 k = 0 End If If k = 0 And A <= 0.6 Then ';上次未投中,本次投中 s = s + 1 k = 1 End If If k = 0 And A > 0.6 Then ';上次未投中,本次也未投中 k = 0 End If Next n pn = s / (n - 1) Print "p(n)=";: Print Format(pn, "0.##") End Sub ------------------------------------------------------------ 程序运行结果: p(n)=0.75
 楼主| 发表于 2014-2-19 16:08 | 显示全部楼层

投篮投进后再投进概率为 0.8 ,投不进后再投进概率为 0.6 ,求第 n 次投进的概率

下面引用由天山草2014/02/19 08:58am 发表的内容:
这个题目可以改成更有趣的形式,就是不规定第一次是否投进,问投充分多次以后,每一次投入的概率是多少。
    结果也是 0.75。
楼上 天山草 的结论很对!
可以证明,不管第一次投篮的结果如何,长期进行下去,投篮投进的概率总是会趋于 0.75 。

 楼主| 发表于 2014-2-19 16:12 | 显示全部楼层

投篮投进后再投进概率为 0.8 ,投不进后再投进概率为 0.6 ,求第 n 次投进的概率

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|数学中国 ( 京ICP备05040119号 )

GMT+8, 2026-1-13 13:49 , Processed in 0.152614 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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