Application of Permutation and Combination

这篇具有很好参考价值的文章主要介绍了Application of Permutation and Combination。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录
  • Summary
  • Reference
  • Online Tool
  • Cracking the Safe!
  • 计算比赛前三名有多少种排列方式?
  • Can you win the lottery?
  • How make a pill?
  • Think

Summary

如果你遇到的问题,自己不确定是排列还是组合,但确定想求出摆放的全部方式,那么可以用逐步分析法。

  • 0.首先确定这个问题的次序重要不?
    • 1.重要
      • 重要就用排列,然后继续确认能重复吗?
        • 1.1 重复排列
          • 公式:\(n^{r}\)(n 是被选择的东西的个数,而我们要选 r次)
        • 1.2 不重复排列
          • 公式:P(n,r)
    • 2.不重要
      • 不重要就用组合,然后继续确认能重复吗?
        • 2.1 重复组合
          • 公式:H(n,r)
        • 2.2 不重复组合
          • 公式:C(n,r)

Reference

https://www.shuxuele.com/combinatorics/combinations-permutations.html

Online Tool

https://gadget.chienwen.net/x/math/percomb

Cracking the Safe!

If you will to cracking a safe, password just four , each-password have 0 to 9 probability , Can you crack the safe?

Notice:

  • Passwords 1100 and 0011 are different!

这个密码排列的特征是:

  • 次序重要
  • 可重复

那么就选重复排列方式计算即可。

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支队伍参加,现在想算前三名的排列情况有多少种?

Notice:

  • If "A" comes first, it cannot come second .

这个名次排列的特征:

  • 次序重要
  • 不可以重复

就选不重复排列方式计算即可。

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)


# out
前三名的排列有多少种: 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等奖。
那么有多少种组合情况?

Notice:

  • If you take the ① ball, you won't be able to take the ① ball later.

这个中奖号码组合的特征:

  • 次序不重要
  • 不可重复

用不可重复组合求即可。

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:
Application of Permutation and Combination

How make a pill?

假设有个神仙要你用5种材料('人参', '萝卜', '火龙果', '鹿茸', '熊掌')做一个仙丹,需要按照一种特定的配方,但是配方不告诉你,只告诉你做的规则,顺序无所谓,需要配3种材料,可以有重复。
你知道你要尝试多少次才能找到配方做出仙丹?

Notice:

  • 食材摆放位置不影响结果,比如说 煮('人参', '鹿茸', '熊掌') 或者 煮('熊掌', '鹿茸', '人参') 出来的丹都是一样的。

这个配方组合的特征:

  • 次序不重要
  • 可重复

用重复组合求即可。

import itertools

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?文章来源地址https://www.toymoban.com/news/detail-475750.html

到了这里,关于Application of Permutation and Combination的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包