Python-Fermi-Dirac统计中的组合数学
费米-狄拉克统计表明,可分辨粒子在宏观状态内的微观状态数遵循以下形式的方程: 组合=m/((m-N)!N 假设m是容器中弹性球的数量,N是你取出的弹性球的数量,这告诉我们有多少种独特的方法可以取出NPython-Fermi-Dirac统计中的组合数学,python,combinatorics,Python,Combinatorics,费米-狄拉克统计表明,可分辨粒子在宏观状态内的微观状态数遵循以下形式的方程: 组合=m/((m-N)!N 假设m是容器中弹性球的数量,N是你取出的弹性球的数量,这告诉我们有多少种独特的方法可以取出N
导入数学
打印“输入m的值”
m=int(原始输入();
打印“输入N的值”
N=int(原始输入());
打印math.factorial(m)/(math.factorial(m-N)*math.factorial(N))
这里是一个应该处理这个问题的算法的快速草图
def combinations(currentPosition, maxPosition, numToInclude):
if numToInclude = 0 or currentPosition > maxPosition:
return [[]]
finalList = []
listOfCombinations = combinations(currentPosition+1,maxPosition,numToInclude-1)
for i in range(len(listOfCombinations)):
finalList[2*i] = [1] + listOfCombinations[i]
finalList[2*i+1] = [0] + listOfCombinations[i]
return finalList
使用itertools.compositions很简单
import itertools
M=4
N=2
for combo in itertools.combinations(range(M),N):
print combo
输出:
(0, 1)
(0, 2)
(0, 3)
(1, 2)
(1, 3)
(2, 3)
适用于Python 2.7的Itertools文档:
Itertools docs for Python 3.6:ps。如果你投了反对票,了解原因会很有帮助,这样我就不会问措辞拙劣的问题了!如果你不需要真正优化性能或使用Itertools组合,我只需要编写一些小的递归算法()你完全改变了问题。如果你有一个不同的问题,创建一个新的问题。我的朋友认为完全改变我的问题会很有趣。我很抱歉每个人都同意你!我会尝试一下!使用itertools.combines。它在标准库中。甚至有伪代码。你能解释一下这个算法吗一点点?我很难把我的问题融入其中。这就是为什么你应该使用itertools.combines。你不需要编码,因此你或其作者不可能引入错误(没有不尊重的意思,Erik)没有不尊重巴尼。如果我总是写完美的代码,我会赚更多的钱。