问题一:
有2k只球队,有k-1个强队,其余都是弱队,随机把它们分成k组比赛,每组两个队,问两强相遇的概率是多大?
给定一个数k,请返回一个数组,其中有两个元素,分别为最终结果的分子和分母,请化成最简分数
答:首先,如果从2k个人中选出2个人放入第一组,从剩下的2k-2个人中选出2个人放入第二组。。。,有 种方法。但是,由于分组是没有顺序的,所以还需要除以。接下来,计算没有两强相遇的概率。由于有k-1个强队,所以没有两强相遇就是一个强队分到一个弱队(强弱组合共k-1个),剩下的两个弱队相遇。一个强队分到一个弱队,可以看作k-1个强队已经分好了组,然后从k+1个弱队中挑选出k-1个进行排列组合,为。
∴答案为:
问题二:
n只蚂蚁从正n边形的n个定点沿着边移动,速度是相同的,问它们碰头的概率是多少?
给定一个正整数n,请返回一个数组,其中两个元素分别为结果的分子和分母,请化为最简分数。
答:n只蚂蚁只有顺时针和逆时针两种走法,共有种。其中,不相遇的情况只有都沿顺时针或都沿逆时针方向行走。因此,碰头概率为:
问题三:
某地区重男轻女,一个家庭如果生出一个女孩就一直生,直到生出男孩就停止生育。假设一胎只出生一个孩子,问时间足够长后,男女比例是会变为多少?
答:由于生男生女概率都为1/2,所以有1/2的家庭第一胎就是男孩,有1/4的家庭第一胎是女孩,第二胎是男孩,有1/8的家庭前两胎都是女孩,第三胎是男孩。。。设有n个家庭,则整个地区的孩子总数为:n/2+(n/4*2)+(n/8*3)+... = 2n。又因为每个家庭都有一个男孩,所以男女比例仍然是1/2
问题四:
给定一个等概率随机产生1~5的随机函数,除此之外,不能使用任何额外的随机机制,请实现等概率随机产生1~7的随机函数。(给定一个可调用的Random5::random()方法,可以等概率地随机产生1~5的随机函数)
答:random产生1~5的随机数,则-1后产生0~4的随机数。random*5则得到{0,5,10,15,20}的随机数。random+random*5(排列组合,各个数产生概率相等)可以得到0~24的随机数。现在假设超过20时(21~24)重新产生随机数,小于等于20时模7。那么可以将产生21~24的概率均摊到0~20内,而[0,20]区间内的数正好根据模7的结果分为7份,每份概率相等
问题五:
给定一个以p概率产生0,以1-p概率产生1的随机函数RandomP::f(),p是固定的值,但你并不知道是多少。除此之外也不能使用任何额外的随机机制,请用RandomP::f()实现等概率随机产生0和1的随机函数。
答:虽然产生0和1的概率不一定相等,但是产生01序列或10序列的概率都是p*(1-p)。所以,可以把01看作是0,10看作是1,其他情况重新生成序列。
这种解法可以推广到n个数的情况,我们知道,取n个随机数发生器,存在n个概率相同的独立事件,我们只使用这n个事件就得到1/n的概率了。例如 n=3 ,有 8 中情况000,001,010,011,100,101,110,111,其中001,010,100的概率都是 p 2 ∗ ( 1 − p ) p^2*(1-p)p2∗(1−p)。