您现在的位置: 主页 > 嵌入式人才市场 > 个人求职 > 分享一道自创面试题
本文所属标签:
为本文创立个标签吧:

分享一道自创面试题

来源:net 网络用户发布,如有版权联系网管删除 2018-08-27 

问题描述:

策划想要设计一种怪物,它有m种攻击方式,每种攻击方式都有其特定的使用权重N(i),其中N(i)为正整数,i为1到m的正整数,代表攻击方式序号。当怪物遇到敌人时,将按照权重指示随机的从m种攻击方式选取一种进行攻击,该次攻击完毕后以相同方式再次选取新的攻击方式,并继续攻击敌人,直到战斗结束。

游戏设计者希望如下: 权重为1的攻击方式,最多连续使用1次。权重为2的攻击方式最多连续选取2次,以此类推,权重为n的攻击方式最多连续使用n次。

那么假设现在怪物进入了一场旷日持久的大战,该算法还需要确保权重为N(i)的攻击方式出现频率为 frac{N(i)}{sum_{i=1}^{m}{N(i)}}

举例说明,假设该怪物有3种攻击方式,使用权重分别为1,2,3。 那么权重为1的攻击方式,不得连续使用,权重为2的攻击方式,最多只能连续使用2次。。。且要保证攻击多次后,采用权重为1的攻击方式概率为 frac{1}{1+2+3} ,采用权重为2的攻击方式概率 frac{2}{1+2+3} 。。。

只有两个要求,当然算法可读性越高越好(最好是无论童叟都能看懂你在写什么),代码量越少越好。

假设已经有SkillData类,包含了SkillData的数据。

struct SkillData{   int skill_id;   int skill_weight;}

但需要设计一个类SkillSelector,用来实现上述逻辑。

public class SkillSelector{    private List skill_list;    SkillSelector(List data)    {        skill_list = new List(data.ToArray());    }    int GetNextSkillID()    {    //这个方法每次调用返回新的skill id,确保实现上述逻辑    //TODO:.....    }}



              查看评论 回复

游客   2018-08-31 09:09:05
没做出来不一样不厉害,做出来应该有点水平
1楼 回复本楼
游客   2018-08-28 09:07:39
自以为是的题目,害人害己
2楼 回复本楼


 攻击 方式 权重

网站地图

围观()