查看: 2128|回复: 5

[数学趣题] 【原创】骰子(5)

原创  简洁模式
发表于 2018-5-23 21:35:25 发帖际遇
未经作者同意,禁止转载本篇谜题
这道题是【骰子】系列的完结题,所以当然要出得复杂一点了。
    现在有两个正十二面体的骰子,骰子甲中3个面写上“1”,其余写“2”;骰子乙中5个面写上“1”,其余写“2”。
    若两个骰子都是“1”在上,则把它们都改成“2”;若两个骰子都是“2”在上,则把它们都改成“1”;若一个为“1”一个为“2”,则不改。
    现在将甲、乙两个骰子一起掷出两次。则我第三次一起投掷骰子甲和骰子乙时都掷得“1”的概率为多少?
登录帐号可查看完整回帖内容
发表于 2018-5-23 22:58:29 发帖际遇
  1. gcd=lambda x,y:gcd(y,x%y)if y else x
  2. class A:
  3. def __init__(self,x,y):
  4.   d=gcd(x,y)
  5.   self.x,self.y=x/d,y/d
  6. def __str__(self):
  7.   return'%d/%d'%(self.x,self.y)
  8. def __add__(self,n):
  9.   if type(n)==int:return A(self.x+self.y*n,self.y)
  10.   return A(self.x*n.y+self.y*n.x,self.y*n.y)
  11. def __mul__(self,n):
  12.   if type(n)==int:return A(self.x*n,self.y)
  13.   return A(self.x*n.x,self.y*n.y)
  14. def __div__(self,n):
  15.   if type(n)==int:return A(self.x,self.y*n)
  16.   return A(self.x*n.y,self.y*n.x)
  17. __radd__=__add__
  18. __rmul__=__mul__

  19. def f(x,y,n):
  20. if not n:return A(x*y,NN)
  21. s=0
  22. s+=f(x,y,n-1)*A(x*(N-y),NN)
  23. s+=f(x,y,n-1)*A((N-x)*y,NN)
  24. s+=f(x-1,y-1,n-1)*A(x*y,NN)
  25. s+=f(x+1,y+1,n-1)*A((N-x)*(N-y),NN)
  26. return s

  27. N=12
  28. NN=N*N
  29. print f(3,5,2)
  30. # 36293/248832
  31. # 0.14585342721193414
复制代码
登录帐号可查看完整回帖内容
发表于 2018-5-23 23:00:22
  1. > f:=proc(a,b)
  2. > local x,y;
  3. > x:=evalb(rand(12)()<a);
  4. > y:=evalb(rand(12)()<b);
  5. > if x and y then return a-1,b-1 elif not(x or y)then return a+1,b+1 fi;
  6. > return a,b end:
  7. > g:=proc()
  8. > local a,b;
  9. > a,b:=f(3,5);
  10. > a,b:=f(a,b);
  11. > return a*b/144 end:
  12. > h:=proc(n)
  13. > local s,i;
  14. > s:=0;
  15. > for i from 1 to n do s:=s+g()od:
  16. > return evalf(s/n)end:
  17. > h(100000);

  18.                              .1458575694
复制代码
尚未登录
您需要登录后才可以回帖 登录 | 加入学院