已知某事件发生的概率为p,则要让该事件发生所需的试验次数期望值为1/p
2013-02-03 15:44
204 查看
问题来源:
《数据结构与算法分析——Java语言描述》(美)Mark Allen Weiss
第四章的习题 4.14
理论证明:
已知事件A发生的概率为p,
试验1次,事件A就发生的概率为p,
试验2次,事件A才发生的概率为p·(1-p),
试验3次,事件A才发生的概率为p·(1-p)^2,
...
试验k次,事件A才发生的概率为p·(1-p)^(k-1)。
试验次数的期望
E = sigma(k = 1~无穷大) k·p·(1-p)^(k-1)
记 S = 1 + 2(1-p) + 3(1-p)^2 + ... + k(1-p)^(k-1),
(1-p)S = (1-p) + 2(1-p)^2 + 3(1-p)3 + ... + (k-1)(1-p)^(k-1) + k(1-p)^k,
所以,
pS = 1 + (1-p) + (1-p)^2 + (1-p)^3 + ... + (1-p)^(k-1) - k(1-p)^k,
S = (1-(1-p)^k)/p - k(1-p)^k
当k趋向于无穷大时,S = 1/(p^2),
所以,E = 1/p。
编写程序验证:
import java.util.Arrays;
import java.util.Random;
/**
* 验证:
* 如果某事件发生的概率为p,则要让该事件发生所需进行的平均试验次数为1/p。
* 测试思路:
* 已经从区间[0,99]随机选取10个数,再从其中选择尚未出现的随机数的概率为p=(100-10)/100=0.9,
* 若所需要进行的平均试验次数约等于为1/0.9=1.11,则测试成功。
*/
public class Expectation {
boolean[] B = new boolean[100];
Random RND = new Random();
/**
* 从区间[0,99]产生一个随机数
* @return
*/
int rand10() {
return RND.nextInt(100);
}
/**
* 在[0,99]中随机选取10个不重复的数
*/
public Expectation() {
int count = 10;
while (count > 0) {
int rand_num = rand10();
if (!B[rand_num]) {
B[rand_num] = true;
--count;
}
}
}
public void glance() {
for (int i = 0; i < B.length; ++i) {
if (B[i]) {
System.out.println("辛运数字: "+ i);
}
}
}
/**
* 从区间[0,99]选择尚未出现的随机数所需要试验的次数
* @return
*/
public int expected_trials() {
boolean isFound = false;
int count = 0;
while (!isFound) {
if (!B[rand10()]) {
isFound = true;
}
++count;
}
return count;
}
public static void main(String[] args) {
Expectation expec = new Expectation();
expec.glance();
int[] trial_count = new int[10000];
double sum = 0;
for (int i = 0; i < trial_count.length; ++i) {
trial_count[i] = expec.expected_trials();
sum += trial_count[i];
}
System.out.println("平均试验次数 = " + sum / 10000);
Arrays.sort(trial_count);
for (int i = trial_count.length -1; i >= trial_count.length - 10; --i) {
System.out.println("top 10: " + trial_count[i]);
}
}
}
相关文章推荐
- 概率为0的事件,必然不能发生吗?
- 概率为零的事件天天在发生着。。。。
- 关于试验(测量),事件,随机变量,取值,概率分布,信息,信息熵的理解
- 论证是一门学问 如何让你的观点有说服力-9 规则9 事件发生的概率或许至关重要
- 墨菲定律与小概率事件必然发生
- 【转】SharePoint camel query查询 event 或者Calendar 日历列表的时候,怎么查询所有的重复发生的事件
- 关于iphone 上touch事件动态改变元素位置时与touch点发生偏移的问题
- 移动窗体时候发生的事件
- 当文本框的值发生改变时,触发事件,在IE中有效
- 小概率事情长期会成为必然事件
- ASP.NET 4.0事件消息: 发生了验证错误;检测到有潜在危险的 Request.Form 值。
- 项目管理专业英语-风险事件发生
- [ASP.NET MVC2 系列] Action Filters以及自定义OutputCache ActionFilterAttribute事件发生次序
- html文本框的内容发生改变事件
- 随机事件与概率
- jquery 的on方法获取发生事件的元素对象
- 启动程序是事件发生的顺序
- 德国汽车厂发生机器人杀人事件 人机协作是大势所趋
- HDU 4465 Candy 概率期望值的对数优化
- Khan公开课 - 统计学学习笔记:(三)随机变量、概率密度、二项分布、期望值