2024-01-09 03:09:54 | 我爱编程网
可以使用 Python 的 itertools 模块来生成所有可能的组合,然后再计算每个组合的和。以下是示例代码:
在此代码中,我们首先使用 itertools.combinations() 函数生成了所有可能的组合,并将它们存储在一个名为 combinations 的列表中。然后,我们对列表中的每个组合求和,将它们存储在另一个名为 sums 的列表中。最后,我们通过将 sums 转换为一个集合来确定唯一的和,并打印出我们找到的所有唯一和的数量以及它们各自的值。
请注意,如果数字非常多或者复杂度高,则可能需要考虑优化该代码,以便更有效地生成和计算组合的和。
在日常的工作学习中,我们肯定会遇到排列组合问题,比如,在5种颜色的球中,任意取3个,共有多少种组合方式,这也包括有放回和无放回抽样。
在python中,自带的排列组合函数,都在python的指导工具包itertools中。
product 笛卡尔积 (有放回抽样排列)
permutations 排列 (不放回抽样排列)
combinations 组合,没有重复 (不放回抽样组合)
combinations_with_replacement 组合,有重复 (有放回抽样组合)
python3中返回的为对象,可以通过迭代读取将值输出。
end
以上四种情况均为最常见的排列组合,从有无顺序和是否重复两个维度进行思考,建议理解并背诵。
在使用python计算排列组合之前,需要计算阶乘,可以有两种方式,一是使用math库中的factorial函数,二是使用如下的递归函数。
按照排列的公式:我爱编程网
按照组合的公式:
3.1 生日问题
假设一个班级中共有n个人,一年有365天,其中每天作为生日的概率是相等的,那么其中至少有两个人的生日在同一天的概率是多少?
此题属于全排列问题,需要反向思考,写出公式之后直接输入到python中计算
3.2 大乐透问题
大乐透的玩法是这样的,从35个红球中选择5个,从12个红球中选择2个,如果全中,那就中一等奖。那么请问,中一等奖的概率是多少?
此题属于组合问题,中奖的可能性为一种,因此分子为1,分母为所有的组合情况。
2024-01-01 09:58:48
2023-12-23 12:08:32
2023-09-13 13:02:53
2024-01-02 14:08:02
2024-01-01 07:26:50
2024-01-01 06:15:29