Chinaunix首页 | 论坛 | 博客
  • 博客访问: 830086
  • 博文数量: 158
  • 博客积分: 4380
  • 博客等级: 上校
  • 技术积分: 2367
  • 用 户 组: 普通用户
  • 注册时间: 2006-09-21 10:45
文章分类

全部博文(158)

文章存档

2012年(158)

我的朋友

分类: C/C++

2012-11-19 10:47:12

上次给的公式是错的,这次的公式是验证过的,绝对不会再错 ^_^。
a. 50个人可能的生日组合是365*365*365*……*365(共50个)个。
b. 50个人生日都不重复的组合是 365*364*363*……*316(共50个)个。
c. 50个人生日有重复的概率是 1 - a/b

代码如下:
#include
#include
using namespace std;

unsigned int N = 50;
unsigned int M = 365;

int main()
{
    long double p = 1.0;
    for( unsigned int i=0; i        p *= (1-(double)i/M);
    p = 1-p;

    cout << p << endl;

    system( "PAUSE" );
    return 0;
}

输出结果是:0.97

但可惜long double也不足够精确,所以我将M改为3,N改为0,1,2,3,4,5做测试,结果和实际一样
0/3几率是 0
1/3几率是 0
2/3几率是 1/3
3/3几率是 7/9
4/3几率是 1
5/3几率是 1

阅读(3939) | 评论(27) | 转发(0) |
给主人留下些什么吧!~~

网友评论2012-11-19 10:48:10

廖谦
概率确实蛮高的,我认识的人中就有4个和我一天