1. 介绍

数学计算模块主要包括random、math、statistics三个模块,每个模块的负责区域

  • random: 用于生成各类随机数;

  • math: 提供了许多数学运算函数,返回值一般都是浮点数;

  • statistics: 用于数据统计计算;

2. random:随机

2.1 随机数

import random

if __name__ == '__main__':
print("生成随机整数( 1 =< X <= 100 ):", random.randint(1, 100))
# 返回 [0.0, 1.0) 范围内的下一个随机浮点数。
print("生成随机浮点数( 0.0 <= X < 1.0 ):", random.random())
print("生成随机浮点数( 1 =< X <= 10 ):", random.uniform(1, 10))
print("从[0,2,4,6,8]随机生成:", random.randrange(0, 10, 2))

# -------------------------------- 输出 --------------------------------
生成随机整数( 1 =< X <= 100 ): 40
生成随机浮点数( 0.0 <= X < 1.0 ): 0.6337783120322614
生成随机浮点数( 1 =< X <= 10 ): 1.0035531015062091
从[0,2,4,6,8]随机生成: 4

random.randrange([start], stop[, step]),从指定范围内,按指定基数递增的集合中 获取一个随机数;

2.2 列表相关

import random

if __name__ == '__main__':
list_var = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print("----------------------random.choice:随机取一个----------------------")
# 随机取出一个元素
print("从列表{}中,随机取出一个元素:{}".format(list_var, random.choice(list_var)))

print("----------------------random.sample:随机取多个----------------------")
# 随机取出多个元素
print("从列表{}中,随机取出3个元素:{}".format(list_var, random.sample(list_var, 3)))

# 打乱列表
print("----------------------random.shuffle:打乱列表----------------------")
print("打乱前:", list_var)
random.shuffle(list_var)
print("打乱后:", list_var)

# ----------------- 输出 --------------------------------
----------------------random.choice:随机取一个----------------------
从列表[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]中,随机取出一个元素:5
----------------------random.sample:随机取多个----------------------
从列表[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]中,随机取出3个元素:[1, 4, 6]
----------------------random.shuffle:打乱列表----------------------
打乱前: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
打乱后: [1, 9, 5, 4, 8, 7, 2, 3, 10, 6]

更多使用访问,可查看官方文档:https://docs.python.org/zh-cn/3/library/random.html

3.math:数学计算

import math

if __name__ == '__main__':
print("----------------------------- 常量值 ---------------------------------")
print("math.inf,正无穷大:", math.inf)
print("math.nan,非法数值:", math.nan)
print("math.pi,π圆周率:", math.pi)

print("----------------------------- 取整 ---------------------------------")
print("6.6666 向上取整:", math.ceil(6.6666))
print("6.6666 向下取整:", math.floor(6.6666))
print("----------------------------- 浮点数处理 ---------------------------------")
print("求浮点整数部分:", math.trunc(6.1234))
print("求浮点小数部分:", math.modf(6.1234))

print("----------------------------- 判断 ---------------------------------")
print("判断 x 是否是无穷大:", math.isinf(100))
print("判断 x 是否是无穷大:", math.isinf(math.inf))
print("判断 x 是否是非法数值:", math.isnan(math.nan))
print("判断两值是否接近|10-10.34| <= 0.34:", math.isclose(10, 10.34, abs_tol=0.34))
print("判断两值是否接近|10-10.35| <= 0.34:", math.isclose(10, 10.35, abs_tol=0.34))

print("----------------------------- 其他 ---------------------------------")
print("求5的阶乘(5*4*3*2*1):", math.factorial(5))
print("求(22,8,16)最大公约数:", math.gcd(22, 8, 16))

#################################### 输出 ####################################
----------------------------- 常量值 ---------------------------------
math.inf,正无穷大: inf
math.nan,非法数值: nan
math.pi,π圆周率: 3.141592653589793
----------------------------- 取整 ---------------------------------
6.6666 向上取整: 7
6.6666 向下取整: 6
----------------------------- 浮点数处理 ---------------------------------
求浮点整数部分: 6
求浮点小数部分: (0.12340000000000018, 6.0)
----------------------------- 判断 ---------------------------------
判断 x 是否是无穷大: False
判断 x 是否是无穷大: True
判断 x 是否是非法数值: True
判断两值是否接近|10-10.34| <= 0.34: True
判断两值是否接近|10-10.35| <= 0.34: False
----------------------------- 其他 ---------------------------------
5的阶乘(5*4*3*2*1): 120
求(22,8,16)最大公约数: 2

更多使用访问,可查看官方文档:https://docs.python.org/zh-cn/3/library/math.html#number-theoretic-and-representation-functions

4. statistics: 数学统计

import statistics

if __name__ == '__main__':
print("---------------------------求平均数------------------------------------")
print("求[1,2,3,4,5.5]平均数:", statistics.mean([1, 2, 3, 4, 5.5]))
# fmean 运行速度比mean快
print("求[1,2,3,4,5.5]平均数:", statistics.fmean([1, 2, 3, 4, 5.5]))
print("---------------------------求中位数------------------------------------")
# 取中位数
print("求[1, 2, 3]中位数:", statistics.median([1, 2, 3]))
# 总数为偶数时,中位数将通过对两个中间值求平均
print("求[1, 2, 3, 4]中位数:", statistics.median([1, 2, 3, 4]))
# 总数为偶数时,将返回两个中间值中较小的那个
print("求[1, 2, 3, 4]中位数:", statistics.median_low([1, 2, 3, 4]))
# 总数为偶数时,将返回两个中间值中较大的那个
print("求[1, 2, 3, 4]中位数:", statistics.median_high([1, 2, 3, 4]))
print("---------------------------求频繁数------------------------------------")
# 只取一个
print("求[1,2,3,4,4]经常出现数:", statistics.mode([1, 2, 3, 4, 4]))
print("求'abbbccc'经常出现数:", statistics.mode('abbbccc'))
# 取多个
print("求[1,2,3,3,4,4]经常出现数:", statistics.multimode([1, 2, 3, 3, 4, 4]))
print("求'abbbccc'经常出现数:", statistics.multimode('abbbccc'))

#################################### 输出 ####################################
---------------------------求平均数------------------------------------
求[1,2,3,4,5.5]平均数: 3.1
求[1,2,3,4,5.5]平均数: 3.1
---------------------------求中位数------------------------------------
求[1, 2, 3]中位数: 2
求[1, 2, 3, 4]中位数: 2.5
求[1, 2, 3, 4]中位数: 2
求[1, 2, 3, 4]中位数: 3
---------------------------求频繁数------------------------------------
求[1,2,3,4,4]经常出现数: 4
'abbbccc'经常出现数: b
求[1,2,3,3,4,4]经常出现数: [3, 4]
'abbbccc'经常出现数: ['b', 'c']