什么是可能的算法?

时间:2015-07-30 18:35:53

标签: c++ algorithm

  

SmallR是射手。 SmallR正在与Zanoes进行射手比赛。他们试图轮流射击目标,而SmallR首先射击。对于SmallR,每次射击目标的概率为db.devices.find( function(){ if ( this.unique_id == 'test' ){ this.installed_apps = [{app_id:ObjectId("555390cb8af1031b237e2b32")}] //save changes return true } return false } ) ,而对于Zanoes,则为a/b。首先射入目标的人应该是胜利者。

     

输出:SmallR将赢得比赛的概率。

     

输入:   一行包含四个整数。 a b c d

     

输出:   打印单个实数,即SmallR赢得比赛的概率。

     

如果绝对误差或相对误差不超过10 - 6,则认为答案是正确的。

我想到了如何解决这个问题,但是,我怎样才能计算确切的概率?它以某种方式没有打击我。

c/d

1 个答案:

答案 0 :(得分:1)

  • p =机会SmallR命中= a / b
  • q =偶然Zonoes命中= c / d
两个球员都错过的机会是(1-p)*(1-q)

SmallR赢了比赛(= X),如果他现在命中,或者如果两个球员都错过并且他在稍后的转弯中赢了比赛。由于轮到他了,机会也是X.

  • X = p +(1-p)*(1-q)* X
  • X = p +(1-p -q + pq)* X
  • -p =( - p -q + pq)* X
  • p /(p + q - pq)= X

在给定的例子中1/2 /(1/2 + 1/2 - 1/4)= 1/2 / 3/4 = 4/6 = 0.6666667