欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

深入浅出统计学 第六章 排列与组合

发布时间:2025/3/21 编程问答 45 豆豆
生活随笔 收集整理的这篇文章主要介绍了 深入浅出统计学 第六章 排列与组合 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

内容简介

本章内容主要介绍了两个基本概念,排序与组合
其中组合是之后计算二项分布的预备知识
对于计算而言,重点在于理解其所适应的不同情况,并记忆公式.
两者区别(P261):
1. 排列与顺序有关
2. 组合与顺序无关

或许理解其使用的不同情况还有一些困难,
但是仅仅对于编程而言,本章内容可以说出奇的简单,我们只需要编写阶乘公式,然后组合一下就可以了

编码

思路

从公式上看,组合公式不过比排列公式多了一个阶乘作为分母,而其构成则不过都是阶乘公式而已.
因此我们先编写阶乘公式,然后进行公式拼接即可.
这里我们给出最常用的两种阶乘公式的实现方式,在数值较小时,两者速度差异可以忽略.

两种阶乘公式的实现

import numpy as np def Factorial_Recursion(n):if n==1 & n==0:return 1else:return n*Factorial_Recursion(n-1)def Factorial_Loop(n):if n==1 & n==0:return 1else:result = n;for i in range(2,n):result *= ireturn result print("5的阶乘 {0}".format(Factorial_Loop(5))) print("5的阶乘 {0}".format(Factorial_Recursion(5))) 5的阶乘 120 5的阶乘 120

实现排列与组合

为了复用代码,我们这里将组合与排列合并,并将组合视为排列的一种部分元素无顺序的特殊性情况.
然后我们利用编写的函数计算文中258页到260页的问题:
1. 20匹马的冠亚季军编号
2. 20匹马的前三名编号(无视先后顺序)

# 排列 permutation # 组合 combination def Permutation(n,r,IsCombination=False):if IsCombination:return Factorial_Loop(n)/Factorial_Loop(n-r)/Factorial_Loop(r)else:return Factorial_Loop(n)/Factorial_Loop(n-r)print("冠亚季军编号一共有{0}种情况,但是无视前后顺序的话,则有{1}种情况".format(Permutation(20,3),Permutation(20,3,IsCombination=True))) 冠亚季军编号一共有6840.0种情况,但是无视前后顺序的话,则有1140.0种情况

总结

以上是生活随笔为你收集整理的深入浅出统计学 第六章 排列与组合的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。