生日问题

目录

一,生日问题

二,一般性生日问题

三,相关问题

四,函数值估算


一,生日问题

In probability theory, the birthday problem or birthday paradox concerns the probability that, in a set of n randomly chosen people, some pair of them will have the same birthday. In a group of 23 people, the probability of a shared birthday exceeds 50%, while a group of 70 has a 99.9% chance of a shared birthday.

23个人的生日全都不同的概率是(1-\frac{1}{366})(1-\frac{2}{366})...(1-\frac{22}{366}),约等于50%

70个人的生日全都不同的概率是(1-\frac{1}{366})(1-\frac{2}{366})...(1-\frac{69}{366}),约等于0.1%

二,一般性生日问题

在一个有k个不同元素的集合中,不放回地取n个数,全都不同的概率是(1-\frac{1}{k})(1-\frac{2}{k})...(1-\frac{n-1}{k})

(1)概率p函数

p(n)=(1-\frac{1}{k})(1-\frac{2}{k})...(1-\frac{n}{k}),则全都不同的概率可以表示成p(n-1)

p(0)=1, p(1)=1-\frac{1}{k}, ...,\, p(k-1)=(1-\frac{1}{k})(1-\frac{2}{k})...(1-\frac{k-1}{k}),\, p(k)=0

(2)求和式f函数

f(n)=\sum_{t=1}^np(t)=\sum_{t=1}^n(1-\frac{1}{k})(1-\frac{2}{k})...(1-\frac{t}{k})

f(0)=1, f(1)=1-\frac{1}{k}\, , ...,\,f(k-1)=\sum _{t=1}^{k-1}p(t)\, ,\, f(k)=f(k-1)

(3)求和式g函数

\begin{aligned} g(n)=\sum_{t=1}^{n} t p(t) &=\sum_{t=1}^{n} t\left(1-\frac{1}{k}\right)\left(1-\frac{2}{k}\right) \cdots\left(1-\frac{t}{k}\right) \\ &=k \sum_{t=1}^{n} \frac{t+1}{k} \cdot\left(1-\frac{1}{k}\right)\left(1-\frac{2}{k}\right) \cdots\left(1-\frac{t}{k}\right)-\sum_{t=1}^{n}\left(1-\frac{1}{k}\right)\left(1-\frac{2}{k}\right) \cdots\left(-\frac{t}{k}\right) \\ &=k\left(f(n)-f(n+1)+1-\frac{1}{k}\right)-f(n) \end{aligned}

即 g(n)=k-1-k p(n+1)-f(n)

g(0)=0, g(1)=1-\frac{1}{k},...,g(k-1)=k-1-f(k-1), g(k)=g(k-1)

(4)求和式h函数

\begin{aligned} h(n)=\sum_{t=1}^{n} t^{2} p(t) &=\sum_{t=1}^{n} t^{2}\left(1-\frac{1}{k}\right)\left(1-\frac{2}{k}\right) \cdots\left(1-\frac{t}{k}\right) \\ &=k \cdot \sum_{t=1}^{n} t \cdot \frac{t+1}{k}\left(1-\frac{1}{k}\right)\left(1-\frac{2}{k}\right) \cdots\left(1-\frac{t}{k}\right)-g(n) \\ &=k(g(h)-g(n+1)+f(n+1))-g(n) \\ &=kf(n+1)+f(n)-k n p(n+1)-k+1\\&=(k+1) f(n)-k(n-1) p(n+1)-k+1 \end{aligned}

h(0)=0, h(1) =1-\frac{1}{k}, \cdots h(k-1)=(k+1) f(k-1)-k+1, h(k)=h(k-1)

三,相关问题

在一个有k个不同元素的集合中,不放回地取数,一直到第一次出现重复的数为止,取数的数目(包括最后这个重复的数)的均值是多少呢?

E=\sum _{t=2}^{k+1}p(t-2)\frac{t-1}{k}t=\frac{h(k-1)+3g(k-1)+f(k-1)+2}{k}

所以 E=(1-\frac{1}{k})f(k-1)+2,其中f(k-1)=\sum _{t=1}^{k-1}p(t)

所以E=2+(1-\frac{1}{k})\sum _{t=1}^{k-1}(1-\frac{1}{k})(1-\frac{2}{k})...(1-\frac{t}{k})

四,函数值估算

p(n)=(1-\frac{1}{k})(1-\frac{2}{k})...(1-\frac{n}{k})<e^{-\frac{1}{k}}e^{-\frac{2}{k}}...e^{-\frac{n}{k}}=e^{-\frac{n(n+1))}{2k}}

f(n)=\sum_{t=1}^np(t)=\sum_{t=1}^n(1-\frac{1}{k})(1-\frac{2}{k})...(1-\frac{t}{k})

u=\left \lfloor \sqrt k \right \rfloor

f(k-1)< \sum _{t=1}^u 1+\sum _{t=u+1}^{k-1}(1-\frac{1}{k})(1-\frac{2}{k})...(1-\frac{t}{k})\\ <u+\sum _{t=u+1}^{k-1}(1-\frac{1}{k})(1-\frac{2}{k})...(1-\frac{u+1}{k})(1-\frac{u+1}{k})^{t-u-1}\\ <u+\frac{k}{u+1}(1-\frac{1}{k})(1-\frac{2}{k})...(1-\frac{u+1}{k})\\ <u+\frac{k}{u+1}e^{-\frac{(u+1)(u+2)}{2k}}

所以f(k-1)<u+\frac{k-u}{u}e^{-\frac{1}{2}}<(1+e^{-\frac{1}{2}})\sqrt k-e^{-\frac{1}{2}}

所以E=(1-\frac{1}{k})f(k-1)+2<(1+e^{-\frac{1}{2}})\sqrt k+2

在计算机科学中,特别是概率论和计算理论领域,生日问题是这样一个经典的概率问题:假设在一个房间里有n个人,每个人都有随机选择一年中的任意一天作为他们的生日,问至少需要多少人才能确保至少有两个人同一天生日的概率大于某个特定值。 Java可以用于模拟这个问题,通过随机生成每一天作为每个人的生日,并维护一个数组或集合来跟踪已经出现过的生日。当添加第n+1个人时,我们可以检查这个人与当前已知的生日是否冲突,如果有冲突,则找到了一对相同的生日;如果没有冲突,我们就继续添加人直到找到冲突。 以下是一个简单的Java代码片段来模拟这个问题: ```java import java.util.*; public class BirthdayProblem { public static void main(String[] args) { int totalPeople = 0; while (probabilityOfNoOverlap(totalPeople) < 0.997) { // 例如设置99.7%的概率保证至少有一个人生日相同 totalPeople++; } System.out.println("至少需要 " + totalPeople + " 人才有超过99.7%的可能性存在至少两人生日相同"); } public static double probabilityOfNoOverlap(int peopleCount) { Calendar daysInYear = Calendar.getInstance(); return Math.pow(365 / daysInYear.getActualMaximum(Calendar.DAY_OF_YEAR), peopleCount); } } ``` 在这个程序中,`probabilityOfNoOverlap`函数计算没有共享生日的概率,然后我们在循环中不断增加人数,直到这个概率小于我们想要的阈值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值