首页 > 移动平台 > 详细

有一个游戏,玩法如下:一个方块一开始放置在原点,每次投掷一个均匀的六面骰子,掷出几点,将方块往前移动几点;问:当游戏一直进行下去,方块曾经落在2019的概率为?

时间:2019-03-30 15:22:45      阅读:235      评论:0      收藏:0      [点我收藏+]

题面:有一个游戏,玩法如下:一个方块一开始放置在原点,每次投掷一个均匀的六面骰子,掷出几点,将方块往前移动几点;问:当游戏一直进行下去,方块曾经落在2019的概率为?

牛客网上看到的水题

1.首先,走到1只有一种情况,就是第一次扔了1,所以其概率为1/6

2.走到2有两种情况:

  1.直接扔了个2

    2.第一次扔了个1,第二次又扔了个1

   所以走到2的概率为1/6+1/6*1/6等于7/36

3.走到3就有3三种情况:直接扔了3;从1扔了个2过来;从2扔了个1过来,以此类推

这样我们可以算出1-6的概率

对于那些大于6的,打个比方,到2008的概率,它只有6种情况:从2007扔个1过来,2006扔个2过来...

于是它的概率就是分别用1/6乘以走到2007、2006的概率

这样递推式就建立起来了,最后输出2019的概率就可以了

代码:

#include<iostream>
#include<cstring>
using namespace std;
int main()
{
    const double six=(double)1/6;
    double a[2200];
    memset(a,0,sizeof(a));
    a[1]=six;
    for(int i=2;i<=6;i++)
    {
        a[i]=six;
        for(int j=1;j<=6;j++)
        {
            if(i-j) a[i]+=a[i-j]*six;
        }
    }
    for(int i=7;i<=2019;i++)
    {
        for(int j=1;j<=6;j++)
        {
            a[i]+=a[i-j]*six;
        }
    }
    cout<<a[2019]<<endl;
}

最后输出的答案是:0.285714 也就是2/7

所以答案选D

当然概率论大神也可以直接手算 这个我就不会啦

有一个游戏,玩法如下:一个方块一开始放置在原点,每次投掷一个均匀的六面骰子,掷出几点,将方块往前移动几点;问:当游戏一直进行下去,方块曾经落在2019的概率为?

原文:https://www.cnblogs.com/EdwardZhang/p/10627406.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!