当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 2 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : [讨论]一道看上去很简单的题,大家来看看怎么解方便
帖子发表于 : 2008-08-03 18:24 

注册: 2007-04-18 2:57
帖子: 74
送出感谢: 0 次
接收感谢: 0 次
编号为1,2,3,4,5的五只球,五个人各取一只,问A不取1,B不取2,C不取3,D不取4,E不取5的概率。

我倒是想出来了个解法,不知道对不对,也不知道好不好,大家先不要看代码,想想别的方法,讨论一下。

代码:
#!/usr/bin/python

def F(N):
   if N==1: return 1
   else: return 1.0/N + (N-1.0)/N * New(N-1)

def New(N):
   if N==1: return 0
   else: return 1.0/N * F(N-1) + (N-1.0)/N * New(N-1)

print 1-F(5)


我算出结果是0.367


页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2008-08-04 11:19 

注册: 2007-04-18 2:57
帖子: 74
送出感谢: 0 次
接收感谢: 0 次
傻掉了,原来直接用容斥原理最简单
代码:
from decimal import Decimal
def jc(n):
   if n>1:
      tmp=1;
      for i in range(1,n+1):
         tmp *= i
      return tmp
   return 1

def C(n,r):
   return jc(n)/jc(r)/jc(n-r)

def P(n,r):
   return jc(n)/jc(n-r)

def F(n):
   sign = 1
   tmp = 0
   for i in range(1,n+1):
      tmp = tmp + sign * C(n,i) * P(n-i, n-i)
      sign = -1 if sign==1 else 1
   return Decimal(1) - Decimal(tmp)/Decimal( P(n,n) )
print F(5)
print F(1000)


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 2 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译