Application of Permutation and Combination
Reference
https://www.shuxuele.com/combinatorics/combinations-permutations.html
Online Tool
https://gadget.chienwen.net/x/math/percomb
Cracking the Safe!
假设你要暴力破解一个保险箱,密码只有4位,每位有0-9个可能,请思考怎么破解呢?
这个密码排列的特征是:
- 次序重要
- 可重复
那么就选重复排列方式计算即可。
Code:
import itertools
product_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
product = list(itertools.product(product_list, repeat=4))
print("product number :", len(product))
print("product list: ", product)
# out:
product number : 10000
product list: [(1, 1, 1, 1), (1, 1, 1, 2), (1, 1, 1, 3), (1, 1, 1, 4) ... ]
计算比赛前三名有多少种排列方式?
有一场比赛,分别有A,B,C,D,E,F,G,H共8支队伍参加,现在想算到时得前三名的排列情况有多少种?
这个名次排列的特征:
- 次序重要
- 不可以重复
那么就选不重复排列方式计算即可。
from itertools import permutations
itering = permutations(['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'], 3)
plist = list(itering)
print("前三名的排列有多少种: ", len(plist))
print("permutations list: ", plist)
# 前三名的排列有多少种: 336
# permutations list: [('A', 'B', 'C'), ('A', 'B', 'D'), ('A', 'B', 'E'), ('A', 'B', 'F'), ... ]
Can you win the lottery?
假设彩票的玩法是从编号为01~33个球中随机抽出6个,顺序不重要。你选6个数组合成一注彩票,如果所选的6个号码都中了,就表示你中了1等奖。
那么有多少种组合情况?
这个中奖号码组合的特征:
- 次序不重要
- 不可重复
用不可重复组合求即可。
from itertools import combinations, permutations
from scipy.special import comb, perm
C = comb(33, 6)
# out: C = 3.0
print("combinations number: ", C)
itering = combinations(
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33], 6)
Clist = list(itering)
with open('temp.txt', 'w') as f:
for i in Clist:
f.writelines(str(i) + "\r")
# out:
combinations number: 1107568.0
out:

如何做仙丹?
假设有个神仙要你用5种材料('人参', '萝卜', '火龙果', '鹿茸', '熊掌')做一个仙丹,需要按照特定的配方,但是配方不告诉你,只告诉你做的规则,顺序无所谓,可以有重复,正确的只有一种配方。
你知道你要尝试多少次才能做出仙丹?
这个配方组合的特征:
- 次序不重要
- 可重复
用重复组合求即可。
c_list = ['人参', '萝卜', '火龙果', '鹿茸', '熊掌']
clist = list(itertools.combinations_with_replacement(c_list, 3))
print("一共有多少种组合: ", len(clist))
print("List: ", clist)
#out:
一共有多少种组合: 35
List: [('人参', '人参', '人参'), ('人参', '人参', '萝卜'), ('人参', '人参', '火龙果'), ('人参', '人参', '鹿茸'), ('人参', '人参', '熊掌')...]
Think
Do you know any other application scenarios?
TODO
Permutation Concept
TODO
Combination Concept
TODO
Application of Permutation and Combination的更多相关文章
- Leetcode 46 47 Permutation, 77 combination
Permutation class Solution { List<List<Integer>> res = new ArrayList<List<Integer& ...
- Multiplexing SDIO Devices Using MAX II or CoolRunner-II CPLD
XAPP906 Supporting Multiple SD Devices with CoolRunner-II CPLDs There has been an increasing demand ...
- DDD:小议 BoundexContext 设计
背景 看了这篇文章:Coding for Domain-Driven Design: Tips for Data-Focused Devs,对 BoundedContext 的设计有了一点新的体会,记 ...
- keybd_event函数用法
转自不用winio,直接达到驱动级模拟键盘效果的keybd_event函数用法 键盘模拟技术是在编写游戏外挂时经常使用的技术.但是由于很多游戏采用了directinput的方式,使得发送的一般键盘消息 ...
- Ruby数组方法整理
数组方法整理 方法列表: all().any().none()和one():测试数组中的所有或部分元素是否满足给定条件.条件可以是语句块中决定,也可以是参数决定 append():等价于push() ...
- 算法题思路总结和leecode继续历程
2018-05-03 刷了牛客网的题目:总结思路(总的思路跟数学一样就是化简和转化) 具体启发点: 1.对数据进行预处理排序的思想:比如8皇后问题 2.对一个数组元素进行比较的操作,如果复杂,可以试试 ...
- [Windows Azure] Windows Azure Execution Models
Windows Azure Execution Models Windows Azure provides different execution models for running applica ...
- 【读书笔记】《Computer Organization and Design: The Hardware/Software Interface》(1)
笔记前言: <Computer Organization and Design: The Hardware/Software Interface>,中文译名,<计算机组成与设计:硬件 ...
- Method, apparatus, and system for speculative abort control mechanisms
An apparatus and method is described herein for providing robust speculative code section abort cont ...
- 自然语言处理(NLP) - 数学基础(1) - 排列组合
正如我在<自然语言处理(NLP) - 数学基础(1) - 总述>一文中所提到的NLP所关联的概率论(Probability Theory)知识点是如此的多, 饭只能一口一口地吃了, 我们先 ...
随机推荐
- 排队论——系统运行指标的R语言实现
排队是在日常生活中经常遇到的现象,如顾客到商店购买物品.病人到医院看病常常要排队.此时要求服务的数量超过服务机构(服务台.服务员等)的容量.也就是说,到达的顾客不能立即得到服务,因而出现了排队现象.这 ...
- kubernetes(k8s)安装命令行自动补全功能
Ubuntu下安装命令 root@master1:~# apt install -y bash-completion Reading package lists... Done Building de ...
- python入门教程之一 什么是python
python简介 1 什么是python Python是一种计算机程序设计语言.你可能已经听说过很多种流行的编程语言,比如非常难学的C语言,非常流行的Java语言,适合初学者的Basic语言,适合网页 ...
- [MYSQL/JDBC]mysql-connector-java与MySQL、JDK对应的兼容版本[转载]
1 文由 MYSQL 数据库版本 与 驱动版本之间的兼容性,可能会涉及到 部分数据库特性(函数.语法)等是否能够正常使用的问题. 2 兼容性: mysql-connector-java VS Mysq ...
- 在Blazor中使用Chart.js
1. 在Blazor中使用Chart.js 首先,从Chart.js官方网站下载Chart.js库文件. 推荐下载这个构建好的版本https://cdnjs.com/libraries/Chart.j ...
- SSM整合的所有配置(配置类)
导入依赖坐标pom.xml <dependencies> <dependency> <groupId>junit</groupId> <artif ...
- 【Voyage】GDOI 2023 旅游记 || ECHO.
\(\color{#FFFFFF}{那是什么样的旅途呢}\) \(\color{#FFFFFF}{真的会害怕很多东西呢.想想害怕的其实不止这样一件事,便产生了"其实都一样没关系的,都应该踏过 ...
- 华为云新一代iPaaS全域融合集成平台全新升级
摘要:基于华为十多年的数字化转型实践,华为云通过组装式交付.数智驱动.DevOps.服务化架构.安全可信.韧性6大关键技术助力客户实现应用现代化和高质量增长,华为云新一代iPaaS全域融合集成平台RO ...
- Active Record Associations
The Types of Associations 在 Rails 中,可以通过 ActiveRecord 来定义不同类型的关联关系(Associations),包括以下几种: belongs_to: ...
- Jenkins-Email Extension Plugin邮件配置
前言:此文为 Jenkins 2.346 版本 一.配置准备 1.安装 Email Extension Plugin 插件 二.配置邮件 Email Extension Plugin 部分 1.进入系 ...