zoukankan      html  css  js  c++  java
  • Boss掉落物品问题

    原问题是这样的:

    玩某游戏中,一个Boss死亡之后会随机掉落物品,一共有四种物品可能会掉落,Boss每次死亡之后都会掉落一种物品,四种物品掉落的概率完全相同。

    现在需要收集其该Boss掉落的四件物品,完成某项任务。问:平均要杀死该Boss多少次才能凑满全部4个物品。

    该问题实际上就是求boss掉落全部四个物品的数学期望,数学期望为值和概率之积的全和。

    s=4*p(4) + 5*p(5) + … + n*p(n);

    问题的关键就在于如何求解p(n);

    很明显,p(n)的值为刚好在第n次杀死boss的时候掉落出最后一件物品,之前的n-1次都是掉落其他3种物品,这样才符合题意。

    于是:1  其中ps表示“挑出的3种物品在前n-1个事件发生时候的出现的可能排列数”,他必须满足1、三种物品必须全部出现;2、不能重复计算出现过的情况;

    于是讨论这个子问题:前n-1个事件中,恰好出现三种物品的排列数

    有三种可能:

    1、全部是一种物品:   共3种排列

    2、恰好由两种物品构成: 共2

    3、恰好有三种物品构成 : 3

    第三种情况恰好就是我们子问题的解

    所以:4

    然后利用分项错开计算。计算无穷小数列的值。

    最后可得:期望值为8.33左右

    附上代码:

    代码
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    //一个BOSS掉4个装备,每杀死次BOSS都只掉1个,
    //4个装备掉的几率相等,问同一玩家要凑齐4个装备平均要杀多少次BOSS?

    namespace Boss
    {
    class Program
    {
    static Random rd = new Random();
    static bool test(int[] a)
    {
    for (int i = 0; i < a.Length; i++)
    {
    if (a[i] != 1)
    return true;
    }
    return false;
    }
    static int sim()
    {
    int[] a = {0,0,0,0};
    int i = 0;
    while (test(a))
    {
    a[rd.Next(
    0, 4)] = 1;
    i
    ++;
    }
    return i;
    }
    static void boss1()
    {
    double sum = 0, summ = 0;
    int COUNT = 1000000;
    for (int j = 0; j < 10; j++)
    {
    for (int i = 0; i < COUNT; i++)
    {
    sum
    += sim();
    }
    sum
    /= COUNT;
    summ
    += sum;
    }
    Console.WriteLine(
    "平均结果是:{0};", summ / 10);
    }


    static void boss3()
    {
    double s1 = 27.0 / 64, s2 = 3.0 / 8, s3 = 3.0 / 64;
    double tmp=4*(s1-s2+s3),s=0;
    for(int i=5;tmp>0.00001;i++)
    {
    s
    += tmp;
    s1
    = s1 * 3 / 4;
    s2
    = s2 / 2;
    s3
    = s3 / 4;
    tmp
    = i * (s1 - s2 + s3);
    }
    Console.WriteLine(
    "计算和:{0}", s);
    }
    static void Main(string[] args)
    {
    Console.WriteLine(
    "模拟输出:");
    boss1();
    Console.WriteLine(
    "计算输出:");
    boss3();
    }
    }
    }
  • 相关阅读:
    gRPC错误码 http状态码 provide your APIs in both gRPC and RESTful style at the same time
    rust
    lz4 1
    剖析美团内部所采用的网站压力测试方案
    【NOIP2002提高组T4】矩形覆盖-DFS剪枝
    【NOIP2002提高组T4】矩形覆盖-DFS剪枝
    【POJ2777】Count Color-线段树区间更新
    【POJ2777】Count Color-线段树区间更新
    【NOIP2005提高组T3】篝火晚会-置换群
    【NOIP2005提高组T3】篝火晚会-置换群
  • 原文地址:https://www.cnblogs.com/hanyulcf/p/objectsofboss.html
Copyright © 2011-2022 走看看