2013-03-23 136 views
2

我试图解决这个问题TopCoder公司:http://community.topcoder.com/stat?c=problem_statement&pm=10863&rd=141501概率N选择k

但是,我的解决办法是不好的,我不明白为什么。

我的理解给那里的解决方案(下页:外观为LotteryPyaterochka):http://apps.topcoder.com/wiki/display/tc/SRM+466

所以,总结一下我的问题:

我们正在玩一种特殊的彩票:

每此彩票中的彩票是具有N行和5列的矩形网格,其中每个单元格包含1和5 * N之间的整数(含)。单张票内的所有整数都是不同的。

彩票组织者随机选择5个不同的整数,每个整数在1和5 *之间,包括1和5 *。 5个整数的每个可能的子集具有相同的被选择概率。这些整数被称为中奖号码。当且仅当它有一排包含至少3个中奖号码的行时,票才被认为是赢家。

我们想知道中奖的号码(因此,至少有3个获奖同一行中号)

所以,我被困在下面的步骤:

的选择方式号码5个数字出现在'获胜的行'中。

的TopCoder的溶液说:

=

(选择在x获胜中出现的数字的#ways(选择5个数字,其出现 '获胜行' 中的#ways) '获奖行')*(选择的#ways 5-X '非中奖号码')=

(5选择X)*((5N-5)选择(5-X))

由于这一排中奖号码的数量至少为3,x即可3或4或5。所以,我们有 (选择出现在'获胜行'中的5个号码的路线)=

(5选择3)*((5N-5)选择2)+(5选择4)*( (5N-5)选1)+(5选5)*((5N-5)选择0))

我说什么:

(选择5个号码的#ways其中出现在'获胜的行')=

(3个号码中的5个获奖号码)*(2个号码完成行中选择5N-5非中奖号码+ 2之前的非选择获奖号码)=

(5N选择3)*((5N-3)中选择2)

对于N = 10我的方法得到:(5选择3)*(47选择2)= 10810

topcoder方法给出:((5选3)(45选2)+(5选4)(45选1)+(5选5 )*(45选择0))= 10126

为什么我的方法错了?

感谢

回答

2

比方说,中奖号码是1,2,3,4和5。现在让我们来看看它包含获奖行中的所有五个数字的票。

你的方法计算船票很多次,因为它包含在以下罪状:

1 2 3 + two other numbers 
1 2 4 + two other numbers 
1 2 5 + two other numbers 
1 3 4 + two other numbers 
... 

同样的事情发生在门票有四个中奖号码。

这就是为什么这些情况需要单独计算的原因。

+0

非常感谢您提供清晰(快速)的答案。 是否有一种简单的方法可以计算我计算的票数不止一次(以及多少次),所以我可以这么做:MyMethod - 那个数字 – taktak004 2013-03-23 12:35:41

+0

@ taktak004:我不确定。我怀疑这最终会比TopCoder的方法更复杂。 – NPE 2013-03-23 12:40:13