Codejam APAC实践背后的逻辑“不那么随机”

时间:2016-09-10 21:29:43

标签: algorithm

所以我在这里可以找到我引用的问题:Problem C "Not So Random"

现在我很难理解问题甚至是什么问题。更具体地说,似乎正确地解释了测试用例1,但是对于样本案例2,我不明白如何导出5 * 0.72的值。

(5&5) -> 5 with 0.1 probability
(5|5) -> 5 with 0.5 probability
(5^5) -> 0 with 0.4 probability 

这将是机器一的结果。现在,我不明白的是概率如何与机器2相互作用。机器2的输入是什么?如果我们考虑所有三个案例的和,或者和xor,那么0.72如何计算出机器2的输出概率= 5?

2 个答案:

答案 0 :(得分:0)

根据您的观察,机器2的输入是

  • 5,概率为0.6
  • 0,概率为0.4

所有机器的其他固定参数 K 相同,因此机器2也是5。

这给我们留下了以下六个关于在机器2上运行什么操作的场景:

  • 5&5=5概率为0.6 * 0.1
  • 5|5=5概率为0.6 * 0.5
  • 5^5=0,概率为0.6 * 0.4
  • 0&5=0概率为0.4 * 0.1
  • 0|5=5概率为0.4 * 0.5
  • 0^5=5概率为0.4 * 0.4

其中给出了示例中描述的分布:0的概率为0.28,5的概率为0.72。

答案 1 :(得分:0)

机器1的输出是机器2的输入,因此机器2的输入为0,概率为0.4,5为概率0.6。

正如我们已经看到的,当输入机器的长度为5时,输出概率为0.4 / 0.6

同样,应该很容易看出,在输入0上,概率为0.1和0.9(OR或XOR)。

因此,连接输出为5的概率为0.9 * 0.4 + 0.6 * 0.6。