0

我有一个游戏,一开始有 4 个事件:

事件1、事件2、事件3、事件4

在某个时间,只有其中一个是正确的事件。我总是知道哪一个是正确的事件。

我想构建一个机器人来为每个事件分配一个正确事件的百分比,介于 [0-100] 之间(每个事件的百分比总和必须为 100)。机器人应该有 3 个级别。在第 1 级,他有 0.95 的概率给正确事件更多的百分比,在第 2 级,0.65,在第 3 级,0.35。

我怎样才能做到这一点?我花了很多时间思考这个问题,但无法找到一个简单的方法来做到这一点。

---更新示例

对于所有示例,假设输入为:

事件 1:错误 事件 2:正确 事件 3:错误 事件 4:错误 机器人级别:将在上面提供的所有输出案例中发生变化,从 1 开始,在最后一个输出中以值 3 结束。

输出案例:

事件 1:20% 事件 2:70% 事件 3:5% 事件 4:5%

让我们假设机器人现在处于 2 级并且正确的事件是 2 示例输出是:

事件 1:15% 事件 2:48% 事件 3:15% 事件 4:22%

让我们假设机器人现在处于 3 级并且正确的事件是 2 示例输出是:

事件 1:17% 事件 2:35% 事件 3:30% 事件 4:18%

我希望第 1 级的机器人有 95% 的概率给正确事件更多的百分比,在第 2 级有 65% 的概率给正确的事件更多的百分比,在第 3 级有 35% 的概率给正确的事件更多的百分比正确的事件...我还希望,正如示例中清楚的那样,在级别 1 中,百分比值之间的差异大于级别 2,级别 2 中的百分比值之间的差异大于级别 3..As机器人在每个级别都有失败的可能性,有时百分比更高的事件可能是错误事件..我认为这很清楚我现在想要的。

4

1 回答 1

1

您想要的是每个事件的概率权重加起来为 1。然后执行以下操作:

生成一个介于 0 和 1.0 之间的随机数

current weight = 1
for each event probability weight in ascending order
   current weight -= event weight
   if random number >= current weight
       we have our event

假设我们有 event1 为 0.3,event2 为 0.5,event3 为 0.1,event4 为 0.1。

然后我们会向下检查是否

random number is >= 0.9 (between 1 and 0.9) event4
random number is >= 0.8 (between 0.9 and 0.8) event3
random number is >= 0.5 (between 0.8 and 0.9)  event1
random number is >= 0 (between 0.5 and 0) event2
于 2013-08-15T12:21:40.087 回答