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();
    }
    }
    }
  • 相关阅读:
    postgresql字符串函数
    ruby中的设计模式--策略模式
    (转)MySQL 性能优化的最佳20多条经验分享
    (转)ruby中的设计模式--模板方法
    观察者模式的应用
    postgresql的ARRAY_TO_STRING
    ruby和javascript的观察者模式
    mysql表连接的时候注意事项
    checkbox记忆功能的实现
    order by的注意事项
  • 原文地址:https://www.cnblogs.com/hanyulcf/p/objectsofboss.html
Copyright © 2011-2022 走看看