Take Your Seat Gym - 102222D
Take Your Seat Gym - 102222D
題意:
第一次是n個人坐飛機,按照1到n的順序登機,第一個人登機牌丟了,他隨機做一個座位,2到n個人上來按照自己的登機牌坐座位,如果他的座位被坐了,就在隨機找一個座位,否則就做自己的座位,問第n個人坐對的概率是多少?
第二次跟第一次的區別是不是從1-n按順序上車了,而是隨機找人上車,1號還是丟了登機牌,問問第n個人坐對的概率是多少?
題解:
概率題最容易把自己算懵
第一問:
如果n = 1,概率是1(肯定能坐對)
如果n = 2,有兩個選擇,第一個人選對,最后一個人就只能做錯,反之,所以概率為1/2
如果n = 3,
1.第一個人選對了位置,后面就都坐對了,概率為1/3
2.第一個人選了第2個位置,第二個人上來就會隨機選擇,只有兩個位置可以選(1/2),所以最后一個人坐對的概率是1/3 * 1/2
3.如果第一個人選了第三個位置,則最后一個人一定坐不上對的位置(因為上來就被占了)。概率為0
總概率為 = 1/3 +1/3 * 1/2+0=1/2
…
總結歸納:P(n)=1/n + 1/n * P(n-1) +1/n * P(n-2)+…1/n * P(2) + 0 =1/2
所以總結,n = 1時,p=1,其他p=1/2
第二問:
(m為總人數)
如果一號是最后一個上車的,那么第n個人一定坐對,否則,如果是第i個上車的,那么前n-i個人肯定會坐在自己的位置上,問題又回到了1號身上,他又相當于第一個上車的,所以只要1號不是最后一個上車的,概率總是1/2,所以是
1/m+(m-1)/m * 1/2 = (m+1)/(2m)
代碼:
#include <iostream> #include <cstdio> using namespace std;int main() {int t,n,m,cas=1;cin >> t;while(t--){double ans=0.5;cin >> n >> m;if(n==1) ans=1;printf("Case #%d: %.6f %.6f\n",cas++,ans,1.0*(m+1)/(2*m));}return 0; }總結
以上是生活随笔為你收集整理的Take Your Seat Gym - 102222D的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 文件粉碎工具哪个好 六款常见的粉碎软件介
- 下一篇: 电脑硬盘出现IO设备错误无法运行此项请求