排列组合——排列

学习概率论与数理统计,要用到排列组合的知识,更重要的是要用到排列组合的思维方法,因此,学习概率与统计是很有必要了解一下排列组合的知识的。

以下是两道比较简单的关于排列的问题,相信文科生也是能解的。

题1、三个数字1、2、3,把这三个数字组合成一个三位数,那么能组合成多少个数字,这些数字分别是什么?百位、十位和个位不重复的数有多少个,这些数字分别是什么?
解:先列出百位数为1的所有数:111,112,113,121,122,123,131,132,133总共9个数。然后是百位数为2的所有数:211,212,213,221,222,223,231,232,233总共9个数。最后是百位数为3的所有数:311,312,313,321,322,323,331,332,333总共9个数。
1、2、3能够组成的三位数总共是27个,求百、十、个位不重复的数也很简单,把上面数字中百、十、个位有重复去除:123,132,213,231,321,312,不重复的排列数为6。

题2、三个数字1、2、3,把这三个数字组合成一个两位数,那么能组合成多少个数字,这些数字分别是什么?十位和个位不重复的数有多少个,这些数字分别是什么?
解:
先列出十位数为1的所有数:11,12,13总共3个数。
然后是十位数为2的所有数:21,22,23总共3个数。
最后是十位数为3的所有数:31,32,33总共3个数。
1、2、3能够组成的两位数总共是9个,把上面数字中十位和个位有重复去除:12,13,21,23,31,32,不重复的排列数为6。

以上方法虽然有点笨,但还是能手工解出来的,那么如果换成四位1、2、3、4或五位1、2、3、4、5个数呢?再狠一点,手机号码为11位,问以138开头共可以组成多少个手机号码?估计再用这个方法去解就麻爪了。

为什么我们要学点数字知识呢?其实数字并不仅仅只是买菜算算账,1+1=2这些简单的数字运算,数学更多的是逻辑推理和抽象总结。排列的定义就很简单,一个公式就抽象概括了排列的问题。

排列的定义:从n个不同元素中,任取m(m≤n,m与n均为自然数,下同)个元素按照一定的顺序排成一列,叫做从n个不同元素中取出m个元素的一个排列;从n个不同元素中取出m(m≤n)个元素的所有排列的个数,叫做从n个不同元素中取出m个元素的排列数,用符号 A(n,m)表示。

计算公式为:

不可重复排列数公式.png

流式记法:A(n,m)=n(n-1)……*(n-m+1)=n!/(n-m)!(*为乘号,/为符号,A-Arrangement为排列数,在旧教材为P-Permutation),n!表示阶乘,如6!=6x5x4x3x2x1,别外规定0!=1

当n>m时称为选排列,n=m时称为全排列。另外排列又分元素可以重复的排列和元素不允许重复的排列,上面的公式是求不允许重复排列数的公式,可以重复的排列数计算公式为:

可重复排列数公式.png

流式记法:A(n,m)=n^m,也就是n的m次方

所以根据公式,题1不重复排列数就是A(3,3)=3!/(3-3)!=1*2*3*1=6,重复排列数就是A(3,3)=33=27;题2不重复排列数就是A(3,2)=3!/(3-2)!=1*2*3*1=6,可重复排列数就是A(3,2)=32=9。

import math
from tkinter import *
class Window:
    def __init__(self, title='排列数计算器', width=300, height=120, staFunc=bool, stoFunc=bool):
        self.w = width
        self.h = height
        self.stat = True
        self.staFunc = staFunc
        self.stoFunc = stoFunc
        self.staIco = None
        self.stoIco = None

        self.root = Tk(className=title)

    def drawCenter(self):
        ws = self.root.winfo_screenwidth()#用户屏幕宽度
        hs = self.root.winfo_screenheight()#用户屏幕高度
        x = int( (ws/2) - (self.w/2) )#距屏幕左边框的像素点数
        y = int( (hs/2) - (self.h/2) )#距屏幕上边框的像素点数
        self.root.geometry('{}x{}+{}+{}'.format(self.w, self.h, x, y))
    
    def createWidgets(self):
        Label(self.root, text="所有元素数n:").grid(row=0,sticky=E)
        Label(self.root, text="取出的元素数m:").grid(row=1,sticky=E)
        Label(self.root, text="不可重复排列数:").grid(row=2,sticky=E)
        Label(self.root, text="可重复排列数:").grid(row=3,sticky=E)
        self.e1 = Entry(self.root)
        self.m = StringVar()
        self.e2 = Entry(self.root,textvariable=self.m)
        self.a1 = StringVar()
        self.e3 = Entry(self.root,textvariable=self.a1)
        self.a2 = StringVar()
        self.e4 = Entry(self.root,textvariable=self.a2)
        self.e1.grid(row=0, column=1)
        self.e2.grid(row=1, column=1)
        self.e3.grid(row=2, column=1)
        self.e4.grid(row=3, column=1)
        self.btnSer = Button(self.root, command=self.click, width=3, height=1,text='运行')
        self.btnSer.grid(row=4,column=1,sticky=E)
        btnQuit = Button(self.root, text='关闭窗口', command=self.root.quit, width=8, height=1)
        btnQuit.grid(row=4,column=2)

    def click(self):
        n=int(self.e1.get())
        m =int(self.e2.get())
        #不可重复排列数
        a1=math.factorial(n)/math.factorial(n-m)
        self.a1.set(int(a1))
        #可重复排列数
        a2=math.pow(n,m)
        self.a2.set(int(a2))
        
    def loop(self):
        self.root.resizable(False, False)   #禁止修改窗口大小
        self.createWidgets()
        self.drawCenter()                       #窗口居中
        self.root.mainloop()

if __name__ == '__main__':
    w = Window(width=350, height=150)
    w.loop()

以上是排列数计算器python代码,下图为关于手机号以138开头共可以组成多少个手机号码的答案截图,由于前三位138已经确认,所以只需要确认后8位的数字,就可以组成11位数字的手机号,0-9有十个数,取8位数,得出可重复的排列数有1亿个,如果手机号是12位的话,就会有10亿个手机号,全国人民用一个号段就差不多够用了。


手机号.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容

  • 加法原理和乘法原理,是排列组合中的二条基本原理,在解决计数问题中经常运用。掌握这两条原理,并能正确区分他们,至关重...
    勇赴阅读 21,620评论 3 9
  • 排列组合的定义 排列的定义:从n个不同元素中,任意取m个元素,m≤n且m和n都是自然数,按照一定顺序排成一列,叫做...
    伍帆阅读 4,527评论 6 10
  • 安装 源 清华 (效果不错)updatehttps://mirrors.tuna.tsinghua.edu.cn/...
    MrHamster阅读 7,173评论 1 1
  • 分享了成长为高级运营所要做的五个点,希望对你有所帮助 我们走在同一条路上,穿的却是各自的鞋。我们同在一个旅游景点,...
    Levin711阅读 534评论 0 5
  • 一个人要孤独成什么样子, 才宁愿选择跟风对话。 仿佛只有深夜的风, 才能读懂你的心吧? 风声萧萧, 但不会对你怒吼...
    tulipjia阅读 303评论 9 7