数学期望整理
WTSRUVF期望整理:
明确:
如果一件事情成功的概率为p 则期望成功的次数为1/p
解释:
符合超几何分布
设为第k次成功 ,则前k-1次都不成功 , 则概率为
P=(1-p)^(k-1) *p
k/次数 |
1 |
2 |
3 |
““` |
““` |
k |
P/概率 |
p |
(1-p)*p |
(1-p)^2 *p |
““` |
““` |
(1-p)^(k-1)*p |
则期望次数E(X)= 1*p + 2*(1-p)*p + 3*(1-p)^2 *p+““+k*(1-p)^(k-1)*p
化简后 E (X) = 1/p
成功的概率相等,花费的价值不相等
题意:在n个门前选择一扇门出去, 然后如果第i扇门的 Xi值是正的话,你会花费Xi时间后出去 , 如果Xi是负数的话你会花费-Xi时间后回到老地方,并且忘记了刚才的选择, 选择一扇门的概率是等概的。求出去期望的时间。
解析:设正值有N1个 负值N2个 一共有N个 则成功的概率(即能走出去的概率)为N1/N (只要有一次为正 就能走出去) 则期望的次数为N/N1
但时间时间不相等 所以不能直接用时间*次数 所以时间也要求期望(即平均值) 再相乘
import java.math.BigDecimal; import java.math.BigInteger; import java.text.DecimalFormat; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Comparator; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; import java.util.Stack; import java.util.Vector; public class Main { public static int gcd(int a,int b) { return b == 0?a:gcd(b,a%b); } public static void main(String[] args) { final int maxn = 10010; Scanner cin = new Scanner(System.in); int T = cin.nextInt(); int cnt = 0; while(T-- != 0) { int cnt1 = 0, cnt2 = 0; int n = cin.nextInt(); int sum = 0; for(int i=0; i<n; i++) { int temp = cin.nextInt(); if(temp > 0) cnt1++; else cnt2++; sum += Math.abs(temp); } System.out.printf("Case %d: ",++cnt); // if(cnt1 == n) System.out.println("1/1"); if(cnt2 == n) System.out.println("inf"); else { System.out.println(sum/gcd(sum,cnt1) + "/" + cnt1/gcd(sum,cnt1)); } } } }
成功的概率不相等,花费的价值相等
例:FZU-2278 YYS
有放回的抽取n张牌,每张在每次抽到的概率为1/n , 每次花费价值为W ,求在得到所有的牌时 期望的花费
在抽第k张牌时 抽到的不为前k-1张的概率为(n-(k-1))/n 即为第k张牌成功的概率 如下表
k/第几张牌 |
1 |
2 |
3 |
“““ |
“““ |
n |
P |
1 |
(n-1)/n |
(n-2)/n |
“““ |
“““ |
1/n |
则第k张牌成功需要的次数为概率的倒数
如下表
k/第几张牌 |
1 |
2 |
3 |
······ |
······ |
n |
次数 |
1 |
n/(n-1) |
n/(n-2) |
····· |
······ |
n |
则总次数为它们的和
Sum = 1 + n/(n-1) + n/(n-2) + “““+ n = n *调和级数
则需要花费的价值为 Value = Sum * W