python中利用随机数绘制曲线

news2024/11/18 16:37:24

使用python绘制数学函数图像很方便,在构造函数自变量取值时可以利用随机数生成模块,因本人工作需要,现将python中随机数的使用,以及二次函数图像绘制进行梳理总结

目录

1. python中的随机数产生

1.1 random模块

1.1 numpy.random模块

2. 绘制函数图形

matplotlib.pyplot模块绘图

3.调用举例


1. python中的随机数产生

1.1 random模块

使用方式:import random

(1)产生整数

random.randint(a, b)
说明:生成区间在[a, b]的随机整数

random.randrange(start, stop, step)
说明:生成区间在[a, b],按step递增的随机数

(2)产生浮点数

random.random()

说明:生成区间在[0.0, 1.0)的浮点数

random.uniform(a, b)

说明:生成区间在[a, b]的浮点数

(3)区间随机选择

random.choice([...])

说明:在区间[...]中随机选择1个元素

random.sample([...], n)

说明:在区间[...]中随机选择n个元素

(4)区间随机打乱

random.shuffle([...])

说明:把区间[...]中的元素随机打乱

1.1 numpy.random模块

使用方法:import numpy as np

(1)产生整数

np.random.randint(low, high, size)

说明:在区间[low, high)随机生成size个整数

np.random.randint(low, high, size)

说明:在区间[low, high)随机生成size个整数

np.arange(low, high, step)

说明:在区间[low, high)中按照步长step生成列表

(2)产生浮点数

np.random.rand(n)

说明:在[0.0, 1.0)之间的随机浮点产生n个浮点数

np.random.randn(n)

说明:随机生成n个具有正态分布的浮点数

(3)随机打乱

np.random.shuffle(arr)

将数组arr随机打乱顺序

2. 绘制函数图形

matplotlib.pyplot模块绘图

使用方法:import matplotlib.pyplot as plt

plt.figure

说明:产生一个图标

sub = fig.add_subplot

说明:创建子图sub

plt.plot

说明:绘制图形

sub1.plot

子图绘制图形

3.调用举例

如下代码在python3.6.9上演示使用随机数模块生成函数自变量来绘制二次函数图形,在实际工作有参考作用,代码如下:

import matplotlib.pyplot as plt
import numpy as np
import random
import string

#range()函数是python的内置函数,它能返回一系列连续添加的整数,能够生成一个列表对象。
myListX = list(range(-100,101))
myListY = []

#随机数的产生方法
#方法一:random模块
#产生[1, 10]之间的随机数
print(random.randint(1, 10))
#产生[1, 10)之间的随机数
print(random.randrange(1, 10))
#产生[0, 100)之间的偶数
print(random.randrange(0, 101, 2))
#产生[0, 1.0)之间的随机浮点数
print(random.random())
#产生[1.0, 2.0]之间的随机浮点数
print(random.uniform(1, 2))
#从fsjfksdj973459中随机选择一个字符
print(random.choice("fsjfksdj973459"))
#从a-z A-Z 0-9生成5个不重复的随机字符
print(random.sample(string.ascii_letters + string.digits, 10))
print(random.sample("dfsfs", 2))
print(random.sample([1, 2, 3, 4], 2))
#打乱列表顺序
testList = ["123av", 1, 2, 3, 4, 5, 6]
print(testList)
random.shuffle(testList)
print(testList)

#方法二:numpy模块
#生成10个[0.0, 1.0)之间的随机浮点数数组
print(np.random.rand(10))
#生成10个具有正态分布的浮点数数数组
print(np.random.randn(10))
#随机返回[1, 10)长度为2的整形数组
print(np.random.randint(1, 10, 2))
#随机返回[1, 20)长度为5的整形数组
print(np.random.random_integers(1, 20, 5))
#分别产生不大于10和不大于20的两个数
print(np.random.randint(10), np.random.random_integers(20))
#产生[1, 20)步长为2的数组
arr = np.arange(1, 20, 2)
print(arr)
#将数组arr打乱顺序
np.random.shuffle(arr)
print(arr)

#num:标题
#figsize:8英寸宽 4英寸高
#dpi:每英寸90个像素
#facecolor:背景颜色绿色
#frameon是否显示边框
fig = plt.figure(num="plt绘制曲线", figsize=(10, 8), dpi=90, facecolor="green", frameon=False)

#创建2行3列子图
sub1 = fig.add_subplot(2, 3, 1) #参数为(232)也可以
sub2 = fig.add_subplot(2, 3, 2)
sub3 = fig.add_subplot(2, 3, 3)
sub4 = fig.add_subplot(2, 3, 4)
sub4 = fig.add_subplot(2, 3, 5)
sub4 = fig.add_subplot(2, 3, 6)

for x in myListX:
    myListY.append((x) * (x))
#默认绘制在最后一个子图上
plt.plot(myListX, myListY, 'green', label='y=x*x')

myListY.clear()
for x in myListX:
    myListY.append((x - 10) * (x - 10))
sub1.set_title("y=(x-10)^2")
sub1.plot(myListX, myListY, 'red', label='y=(x-10)*(x-10)')

myListX = np.arange(-101, 101)
def fun1(x):
    return (x+20) * (x+20)
myListY = fun1(myListX)
sub2.set_title("y=(x+20)^2")
sub2.plot(myListX, myListY, 'y.', label='y=(x+20)^2')

myListX = np.random.rand(50)*4* np.pi - 2*np.pi
def fun2(x):
    return np.sin(x)+0.5*x
myListY = fun2(myListX)
sub3.set_title("y=sin(x)+0.5x and nihe")
sub3.plot(myListX, myListY, 'b.', label='')
#一行两列,在第二列,会把原来的第一行第二列和第二行第二列合并
#plt.subplot(122).plot(myListX, myListY, 'b.', label='')

#噪声数据xu,yu,得到拟合多项式系数,自由度为5
reg = np.polyfit(myListX, myListY, 5)
#计算多项式的函数值。返回在x处多项式的值,p为多项式系数,元素按多项式降幂排序
rMyListY = np.polyval(reg, myListX)
sub3.plot(myListX, rMyListY, 'r.', label='regression')#红色点状

plt.legend(loc=0)
plt.show()

运行结果如下:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/54950.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于Zephyr平台nRF Connect SDK在Windows10下开发环境的快速搭建

基于Zephyr平台nRF Connect SDK在Windows10下开发环境的快速搭建 前言. Nordic开发SDK需要在线搭建,对于网络不太好的,实在是费时费力,该文特点是利用拷贝已经搭建好的一个SDK目录,直接在新的PC平台实现大部分文件的离线安装&…

职业成功指南:10条核心原则(下)丨三叠云

本期继续讲一下职场。 我将通过这两期的内容,为你提供一套简单的核心原则,希望能在职业道路上帮助到你。 让我们一起走进《职业成功指南:10条核心原则》下期 6. 避免攀比陷阱 在职业生涯的早期,你很容易将自己与周围的人进行比…

《Linux运维总结:Centos7.6部署二进制mongodb4.2.23三节点副本集群》

一、Mongodb集群模式 1、三种集群介绍 MongoDB有三种集群部署模式,分别为主从复制(Master-Slaver)、副本集(Replica Set)和分片(Sharding)模式。 1、Master-Slaver 是一种主从副本的模式&#x…

[附源码]计算机毕业设计智慧园区运营管理系统Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

详解设计模式:观察者模式

观察者模式(Observer Pattern)也被称为发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式,是在 GoF 23 种设计模式中定义了的行为型模式。 观察者模式 定义了一对多的关系&#xff…

牛客网最新Java面试通关八股文手册,花点耐心每天刷上10道题,挑战一下年薪50W!

明年金三银四不少人已经蓄势待发,信心满满地准备投递简历,到处面试,在不同的 Offer 之中择优而栖。 与此同时,也有人会悔恨自己这半年进步不大,每天噼里啪啦敲代码,但面对那些不能再熟悉的 Java 面试题时&…

H2N-Val-Pro-Pro-COOH,58872-39-2

H-Val-Pro-Pro-OH,是牛奶来源的脯氨酸肽衍生物,是血管紧张素 I 转化酶 (ACE) 的抑制剂,其IC50 为 9 μM。H-Val-Pro-Pro-OH, a milk-derived proline peptides derivative, is an inhibitor of Angiotensin I converting enzyme (ACE), with …

C++手敲基于梯度图和像素数量数组的OTSU阈值分割

一、OTSU算法原理 ➢OTSU法(最大类间方差法,有时也称之为大津算法) ➢ 使用聚类的思想,把图像的灰度数按灰度级分成2个部分, 使得两个部分之间的灰度值差异最大,每个部分之间的灰 度差异最小 ➢ 通过方…

数学建模-2022年亚太赛C题(含思路过程和代码)

目录 一、题目以及大概的思路 二、数据预处理 三、预测模型 四、全球变暖的相关性分析 五、赛后总结 一、题目以及大概的思路 先对数据进行无量纲化处理,根据所给不确定度与数据,计算出相对不确定度,并将其异常点剔除,通常情况…

[附源码]计算机毕业设计病房管理系统Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

Cisco ASA防火墙——远程控制与多安全区域

作者简介:一名在校云计算网络运维学生、每天分享网络运维的学习经验、和学习笔记。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ 目录 前言 一.远程管理ASA 1.配置Telnet接入 2.配置SSH接入 3.配置ASDM接…

Java数据结构与Java算法学习Day02---算法排序

目录 一、简单排序 1.1Comparable接口介绍 11 1.2冒泡排序 12、13、14 1.3选择排序 15、16、17 1.4插入排序 18、19、20 二、高级排序 2.1希尔排序 21、22、23 2.2归并排序 24 2.2.1递归 24 2.2.2归并排序 25 2.3快速排序 32 2.3.1快速排序的原理 32 2.3.2快速排序…

这可能是我见过最可爱的乒乓女孩了!

3D角色艺术家Carlos Sanz曾在U-tab学习动画,在CICE学习角色创作,现在正致力于创作她的作品集并成为3D动画行业的一员,本文是作者在ZBrush和Maya等软件中设计乒乓女孩角色造型的教程: 首先给大家做个自我介绍。我叫Carlos Sanz&am…

[附源码]计算机毕业设计springboot网上电影购票系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

(阅读笔记)急性卒中CT灌注分析在临床中的实际问题

(阅读笔记)急性卒中CT灌注分析在临床中的实际问题IntroductionUnderstanding the basics of CTP acquisition and processingCTP thresholds and quantificationPitfalls of perfusion imagingTechnical pitfallsPatient motionContrast bolusRadiationC…

CMMI和SPCA是一样的吗?有什么区别

CMMI资质相信有很多企业都了解了,对于SPCA可能有些企业是比较陌生的,不太了解什么是SPCA,简单来说可以理解为CMMI是国外的资质,而SPCA可以理解为国内的,那现在就跟随同邦信息科技的小编一起来看看具体的区别是哪些吧 C…

进程以及线程

目录 🐼今日良言:希望是生命的源泉,失去它生命就会枯萎。 🐯一、进程 🐕1.概念 🐕2.PCB 🐕3.进程调度 🐭二、线程 🐑1.概念 🐇三、进程和线程的联系和区别 &…

Qt实现抽奖程序

一、简介 该程序命名为Lucky,实现的功能如下: 1. 加载抽奖人员名单,并保存加载路径; 2. 单击左键或者点击ctrls开始抽奖,并滚动显示人员名单,显示的人员名单格式为 部门-姓名。 3. 单击左键或者点击ctrls…

了解并应用数字隔离器的安全限值

介绍 电流隔离在工业和汽车系统中很常见,作为防止高电压或抵消接地电位差的一种手段。设计人员传统上使用光耦合器进行隔离,但在过去几年中,使用电容和磁隔离的数字隔离器变得越来越流行。对于任何此类隔离器,了解其安全限值的重…

关于如何找环形链表的入环点

目录一、判断一个链表是否有环二、找到链表入环的第一个节点一、判断一个链表是否有环 给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的…