目录
- 前言
- 一、rand_moving.py文件定义功能如下
- 二、绘图模块
- 小结
前言
综合前述的类、函数、matplotlib等,完成一个随机移动的过程(注意要确定移动的次数,比如10万次),每次行走都完全是随机的,没有明确的方向,结果是由一系列随机决策确定的,最后显示出每次移动的位置的图表。
思考:
1)每次走动多少个像素,由随机函数决定,每次移动方向也随机确定。由随机方向和随机像素共同移动位置大小和方向。
2)保证将每次移动的位置保存在列表中,供后面matplotlib调用,生成图表。
故而,可以分成两个文件,一个为rand_moving类,生成走动像素、方向,并记录相关数据,保存在数列中,另一个为绘图模块randdraw_visual ,调用matplotlib和rand_moving类,生成一个实例,并调用计算出的数列组生成图表。
一、rand_moving.py文件定义功能如下
1、初始化程序,设置一个参ZQhbX数,即移动的次数,初始化位置全部设置为0
2、随机生成x,y的方向和移动像素,并相乘,得到相对移动距离,即为每次移动的距离和方向,即需要4个随机函数来分别确定水平方向和垂直方向的 移动位置大小和方向,
3,计算出下一个位置,并进行保存到位置数列中,即每走完一步后,在屏幕中的绝对位置。
如下:
from random import choice #random是系统自带的随机函数模块
class Rand_moving(): #定义一个Rand_moving类
def __init__(self,num_times=100000): # 初始化,设置默认参数为10万,可以修改这个参数试试机器运行速度
self.num_times = num_times #移动次数
self.x_values=[0] # 设置两个数列,用来保存每一步的位置,初始位置为(0, 0),数列元素个数会一直增加到num_times,用来记录每一步的位置信息
self.y_values=[0]
def fill_moving(self): #定义一个函数,用来计算移动方向和距离,并计算需要保存的位置信息
while lenwww.cppcns.com(self.x_values)<self.num_times:#循环不断运行,直到漫步包含所需数量的点num_times
x_direction = choice([1,-1]) #x的移动方向,1向上,0不变,-1向下
x_distance = choice([0,1,2,3,4,5]) #x的每次移动的像素,
x_step = x_direction*x_distance #移动方向乘以移动距离,以确定沿x移动的距离
y_direction = choice([1,-1]) #y的移动方向,1向上,0不变,-1向下
y_distance = choice([0,1,2,3,4,5]) #y的每次移动的像素,
y_step = y_direction*y_distance #移动方向乘以移动距离,以确定沿y移动的距离
#原地不变
if x_step ==0 and y_step==0: # x_step和 y_step都为零,则意味着原地踏步
continue
#计算下一个点的位置坐标x和y值,并分别保存到数列x_values和y_values中
next_x = self.x_values[-1] + x_step #self.x_values[-1]表示是数列最后一个值,初始为x_values=[0]
next_y = self.y_values[-1] + y_step
ZQhbX self.x_values.append(next_x ) #将每次计算的next_x存入到数列x_values中
self.y_values.append(next_y ) #将每次计算的next_y存入到数列y_values中
二、绘图模块
randdraw_visual.py
绘图模块randdraw_visual.py的功能如下:
1、调用matplotlib和rand_moving类;
2、rand_moving生成一个实例,并计算出的数列组生成图表;
3、用matplotlib中的方法生成图表
import matplotlib.pyplot as plt #导入matplotlib模块 from rand_moving import * #也可以用 import random_moving 注意使用过程中的细微差别 ,小写开头的rand_moving是文件(或称为模块,一个模块中可以有一个类,或多个类),大写开头Rand_moving是类。 rm = Rand_moving() # 利用导入的 Rand_moving 类,创建一个实例rm,这里没有给定参数,默认是10万,可以修改为其他数据。 rm.fill_moving() # 调用类的方法fill_moving() ,并生成随机数列,存入到x_values和y_values中, plt.scatter(rm.x_values, rm.y_values,s=15)#调用实例rm中位置数列x_values和y_values生成图表 plt.show()
程序运行效果(注意,为了对比,程序中创建了3个实例,其中一个为默认值,另两个为50万和5万,如果一直没显示,请耐心等会儿!)
Python+matplotlib调用随机函数生成变化图形
扫一扫手机访问
