C ++中的飞机座位分配概率

假设有n名乘客登上正好有n个座位的飞机。如果第一位乘客遗失了机票并随机选择座位。但是之后,其余乘客将遵循这些操作-

  • 如果仍有门票,请坐在门票上写下自己的座位,

  • 当他们发现自己的座位被占用时,随机挑选其他座位

因此,我们必须找出第n个人获得其自己座位的可能性是多少?因此,如果输入为2,则输出将为0.5。因此,第二个人获得第二席位的概率为0.5(第一个人获得第一席位时)。

为了解决这个问题,我们将遵循以下步骤-

  • 如果n为1,则返回1,否则为0.5

范例(C ++)

让我们看下面的实现以更好地理解-

class Solution {
public:
   double nthPersonGetsNthSeat(int n) {
      if (n == 1) return 1;
      return 0.5;
   }
};

输入值

2

输出结果

0.50000