首页 > 编程语言 >【Python快速上手(三十)】- 详解Python random 模块和 statistics 模块

【Python快速上手(三十)】- 详解Python random 模块和 statistics 模块

时间:2024-05-26 17:59:16浏览次数:27  
标签:statistics Python random 随机 模块 print data

目录

Python快速上手(三十)- 详解Python random 模块和 statistics 模块

1. Python random 模块

Python的random模块用于生成伪随机数,提供了各种函数来生成随机数、随机选择、打乱序列等。以下将详细介绍random模块中的常用函数和用法。

1.1 生成随机数

1.1.1 random()
生成一个介于0和1之间的随机浮点数。

import random

print(random.random())  # 例如:0.37444887175646646

1.1.2 uniform(a, b)
生成一个介于a和b之间的随机浮点数。

print(random.uniform(1, 10))  # 例如:7.251607167706249

1.1.3 randint(a, b)
生成一个介于a和b之间的随机整数,包括a和b。

print(random.randint(1, 10))  # 例如:7

1.1.4 randrange(start, stop[, step])
生成一个从start到stop之间以step为间隔的随机整数。

print(random.randrange(1, 10, 2))  # 例如:3

1.2 随机选择和打乱

1.2.1 choice(seq)
从序列seq中随机选择一个元素。

choices = ['apple', 'banana', 'cherry']
print(random.choice(choices))  # 例如:'banana'

1.2.2 choices(population, weights=None, *, cum_weights=None, k=1)
从population中随机选择k个元素,可以设置权重。

print(random.choices(choices, k=2))  # 例如:['apple', 'cherry']
print(random.choices(choices, weights=[1, 2, 1], k=2))  # 例如:['banana', 'banana']

1.2.3 sample(population, k)
从population中随机选择k个不重复的元素。

print(random.sample(choices, 2))  # 例如:['cherry', 'banana']

1.2.4 shuffle(x[, random])
将序列x中的元素随机打乱。

random.shuffle(choices)
print(choices)  # 例如:['cherry', 'banana', 'apple']

1.3 随机分布

1.3.1 normalvariate(mu, sigma)
生成服从正态分布的随机浮点数,均值为mu,标准差为sigma。

print(random.normalvariate(0, 1))  # 例如:-1.3648562559375676

1.3.2 lognormvariate(mu, sigma)
生成服从对数正态分布的随机浮点数。

print(random.lognormvariate(0, 1))  # 例如:0.34475694097321027

1.3.3 expovariate(lambd)
生成服从指数分布的随机浮点数,参数lambd是指数分布的lambda。

print(random.expovariate(1.5))  # 例如:0.2763192892529276

1.3.4 betavariate(alpha, beta)
生成服从Beta分布的随机浮点数。

print(random.betavariate(0.5, 0.5))  # 例如:0.782085874328928

1.3.5 gammavariate(alpha, beta)
生成服从Gamma分布的随机浮点数。

print(random.gammavariate(1, 2))  # 例如:1.7224712311787424

1.4 种子和状态

1.4.1 seed(a=None, version=2)
初始化随机数生成器的种子。

random.seed(10)
print(random.random())  # 例如:0.5714025946899135

1.4.2 getstate()
返回当前随机数生成器的内部状态。

state = random.getstate()
print(state)

1.4.3 setstate(state)
设置随机数生成器的内部状态。

random.setstate(state)

2. Python statistics 模块

Python的statistics模块提供了一些基本的统计功能,可以用于计算均值、中位数、方差、标准差等统计量。以下将详细介绍statistics模块中的常用函数和用法。

2.1 均值和中位数

2.1.1 mean(data)
计算数据data的算术平均值。

import statistics

data = [1, 2, 3, 4, 5]
print(statistics.mean(data))  # 3

2.1.2 median(data)
计算数据data的中位数。

print(statistics.median(data))  # 3

2.1.3 median_low(data)
计算数据data的低中位数。

print(statistics.median_low(data))  # 3

2.1.4 median_high(data)
计算数据data的高中位数。

print(statistics.median_high(data))  # 3

2.1.5 median_grouped(data, interval=1)
计算数据data的分组中位数。

grouped_data = [1, 3, 3, 5, 7]
print(statistics.median_grouped(grouped_data))  # 3

2.2 众数

2.2.1 mode(data)
计算数据data的众数。

mode_data = [1, 2, 2, 3, 3, 3, 4]
print(statistics.mode(mode_data))  # 3

2.2.2 multimode(data)
计算数据data的所有众数。

print(statistics.multimode(mode_data))  # [3]

2.3 方差和标准差

2.3.1 variance(data, xbar=None)
计算数据data的方差。

print(statistics.variance(data))  # 2.5

2.3.2 stdev(data, xbar=None)
计算数据data的标准差。

print(statistics.stdev(data))  # 1.5811388300841898

2.4 协方差和相关性

2.4.1 covariance(x, y)
计算两个数据集x和y的协方差。

x = [1, 2, 3, 4, 5]
y = [5, 4, 3, 2, 1]
print(statistics.covariance(x, y))  # -2.5

2.4.2 correlation(x, y)
计算两个数据集x和y的相关性。

print(statistics.correlation(x, y))  # -1.0

2.5 分位数和百分位数

2.5.1 quantiles(data, *, n=4, method=‘exclusive’)
计算数据data的分位数。

quantile_data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(statistics.quantiles(quantile_data, n=4))  # [2.5, 5.5, 8.5]

2.6 几何均值和调和均值

2.6.1 geometric_mean(data)
计算数据data的几何均值。

print(statistics.geometric_mean(data))  # 2.605171084697352

2.6.2 harmonic_mean(data)
计算数据data的调和均值。

print(statistics.harmonic_mean(data))  # 2.18978102189781

3. 实际应用案例

3.1 使用random模块生成随机样本并计算统计量

以下示例展示了如何使用random模块生成随机样本,并使用statistics模块计算均值、方差和标准差。

import random
import statistics

# 生成1000个0到100之间的随机整数
data = [random.randint(0, 100) for _ in range(1000)]

# 计算统计量
mean = statistics.mean(data)
variance = statistics.variance(data)
stdev = statistics.stdev(data)

print(f"Mean: {mean}")
print(f"Variance: {variance}")
print(f"Standard Deviation: {stdev}")

3.2 使用random模块模拟抛硬币实验

以下示例展示了如何使用random模块模拟抛硬币实验,并使用statistics模块计算结果的统计量。

import random
import statistics

def coin_flip():
    return 'H' if random.random() < 0.5 else 'T'

# 模拟1000次抛硬币
results = [coin_flip() for _ in range(1000)]

# 统计结果
heads_count = results.count('H')
tails_count = results.count('T')

print(f"Heads: {heads_count}, Tails: {tails_count}")

# 计算比例
heads_ratio = heads_count / len(results)
tails_ratio = tails_count / len(results)

print(f"Heads Ratio: {heads_ratio}, Tails Ratio: {tails_ratio}")

3.3 使用random模块生成正态分布数据并计算统计量
以下示例展示了如何使用random模块生成正态分布数据,并使用statistics模块计算均值和标准差。

import random
import statistics

# 生成1000个服从正态分布的随机浮点数,均值为0,标准差为1
data = [random.normalvariate(0, 1) for _ in range(1000)]

# 计算统计量
mean = statistics.mean(data)
stdev = statistics.stdev(data)

print(f"Mean: {mean}")
print(f"Standard Deviation: {stdev}")

4. 总结

本文详细介绍了Python中的random模块和statistics模块。random模块用于生成伪随机数,支持多种随机数生成方法和随机分布。statistics模块提供了基本的统计功能,可以计算均值、中位数、方差、标准差等统计量。通过结合使用这两个模块,可以方便地进行随机数生成和统计分析。掌握这些知识可以帮助开发人员更好地处理随机数和统计计算,在实际应用中发挥重要作用。

标签:statistics,Python,random,随机,模块,print,data
From: https://blog.csdn.net/qq_38641481/article/details/139141101

相关文章

  • python requests 发送 form-data数据
    application/x-www-form-urlencoded与multipart/form-data的区别https://www.cnblogs.com/mlllily/p/14554907.html利用requests_toolbelt解决Howtosendform-datausingpythonrequests?pip3installrequests_toolbeltimportrequestsfromrequests_toolbelt.mult......
  • 【深度学习】使用python做h256编码的视频抽帧获取图片集
    文章目录前言一、python、深度学习、数据集的概念1.python2.深度学习3.数据集二、使用步骤1.从[visualstudio官网](https://code.visualstudio.com)下载2安装python环境2.1在visualstudio中安装python包2.2安装python依赖库3.安装opencV4.编写python代码5.视频抽帧......
  • 【找出第 K 大的异或坐标值】python
    4层循环暴力超时 classSolution:defkthLargestValue(self,matrix:List[List[int]],k:int)->int:nums=[]forainrange(len(matrix)):forbinrange(len(matrix[0])):num=0foriinrange(......
  • Python OpenCV #1 - OpenCV介绍
    一、OpenCV介绍1.1OpenCV-Python教程简介OpenCV由GaryBradsky于1999年在英特尔创立,第一个版本于2000年发布。VadimPisarevsky加入了GaryBradsky,管理英特尔的俄罗斯软件OpenCV团队。2005年,OpenCV被用于斯坦利,这辆车赢得了2005年DARPA大挑战赛。后来,在WillowGarage的支......
  • 【Python】函数详细介绍
    文章目录函数定义和调用参数类型返回值变量的作用域匿名函数(Lambda函数)递归函数函数定义和调用函数是组织好的、可重复使用的代码块,用来执行特定的任务。Python使用关键字def来定义函数。deffunction_name(parameters):"""docstring"""statement(s)......
  • Bayanay:一款基于Python开发的无线网络安全研究工具
    关于BayanayBayanay是一款基于纯Python开发的无线网络安全研究工具,在该工具的帮助下,无论你身处何地,都可以轻松地对周围地区的无线网络安全状况进行研究与分析。该工具可以通过使用HTML5的地理位置定位功能并结合Scapy获取到的SSID信息来对目标无线网络进行渗透测试与安全研......
  • 设计一个代办功能模块
    目录1.需求分析2.数据库设计用户表(UsersTable)代办任务表(TasksTable)订单表(OrdersTable)评价表(ReviewsTable)3.功能实现创建代办任务前端部分后端部分接受代办任务前端部分后端部分完成代办任务前端部分后端部分支付代办任务前端部分后端部分评价代办任务前端部......
  • Python限制输入的数范围
    在Python中,我们可以使用多种方法来限制用户输入的数值范围。1.使用while循环和try-except语句的方法以下是一个使用while循环和try-except语句的示例,该示例将要求用户输入一个在指定范围内的整数。假设我们要限制用户输入的数在1到100之间(包括1和100):defget_valid_input(min_v......
  • Python中Web开发-FastAPI框架
            大家好,在当今Web开发领域,高性能、易用性和可扩展性是开发者们追求的目标。Python作为一种流行的编程语言,在Web开发领域也有着强大的影响力。而在众多的PythonWeb框架中,FastAPI凭借其快速、现代和易用的特性,成为了开发者们的首选之一。本文将深入探讨FastAPI......
  • 设计模式 1 (Python版)
    设计模式解释:概念《设计模式:可复用面向对象软件的基础》面向对象的特性:封装,继承,多态接口:若干方法的集合限制实现接口的类必须按照接口给定的调用方式实现这些方法对高层模块隐藏了类的内部实现#接口实现的两种方法:#1.写一个父类,其他类必须继承这个方法,若子类不实现这......