python计算组合数c(ni)_用Python计算组合数,通过

最近在开发一个报表,其中的指标要根据 所选择的 维度及属性字段,来动态计算,也就是没办法预先把结果算好。

维度及属性字段共29个,那么总共产生的组合个数为:29个中选1个的组合数,29个中选2个的组合数。。。,直到 29中选择29个的组合数,把这些组合数相加,就是总的组合数。

那么这29个字段的任意组合,到底有多少种可能呢?之前我预估大概是千万级,下面用python来算一算:

import math

s =0

for i in range(1,30):

n,m = 29,i

r = math.factorial(n)//(math.factorial(m)*math.factorial(n-m))

s += r

print(n,m,'组合数:',r)

print('总的组合数:',s)

输出结果:

29 1 组合数: 29

29 2 组合数: 406

29 3 组合数: 3654

29 4 组合数: 23751

29 5 组合数: 118755

29 6 组合数: 475020

29 7 组合数: 1560780

29 8 组合数: 4292145

29 9 组合数: 10015005

29 10 组合数: 20030010

29 11 组合数: 34597290

29 12 组合数: 51895935

29 13 组合数: 67863915

29 14 组合数: 77558760

29 15 组合数: 77558760

29 16 组合数: 67863915

29 17 组合数: 51895935

29 18 组合数: 34597290

29 19 组合数: 20030010

29 20 组合数: 10015005

29 21 组合数: 4292145

29 22 组合数: 1560780

29 23 组合数: 475020

29 24 组合数: 118755

29 25 组合数: 23751

29 26 组合数: 3654

29 27 组合数: 406

29 28 组合数: 29

29 29 组合数: 1

总的组合数: 536870911

最后1行,把上面所有组合数相加,得到总的组合数为:536870911,约为 5.3亿。。。

当然,这么大的组合数,客户在查报表的时候,绝对不可能会覆盖这所有的组合,最多也就是常用的 几十种吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值