《python编程:从入门到实践》随机漫步

您所在的位置:网站首页 python随机漫步 《python编程:从入门到实践》随机漫步

《python编程:从入门到实践》随机漫步

2023-08-16 23:59| 来源: 网络整理| 查看: 265

创建一个模块放在  suiji_walk.py 当中: 

#coding=gbk #随机漫步 #随机漫步是每次行走都是随机的,没有明确的方向, 结果是有一系列的随机决策所决定的。 #建立一个随机漫步的类 from random import choice import random class RandomWalk(): def __init__(self, num_points = 5000): self.num_points = num_points self.x_values = [0] #输出第一个值得坐标为(0,0)为原点 self.y_values = [0] #生成随机漫步的点, 并决定每次随机漫步的方向 def fill_walk(self): #random.seed(123) #设置随机种子 while len(self.y_values) < self.num_points : x_direction = choice([1,-1]) #在 -1 和 1 间选择 ,表示左右方向 x_distance = choice([0,1,2,3,4]) x_step = x_distance * x_direction y_direction = choice([1,-1]) #表示上下方向的变化 y_distance = choice([0,1,2,3,4]) y_step = y_direction *y_distance if x_step == 0 and y_step == 0: continue x_next= self.x_values[-1] + x_step #计算新一个点,将最新的点与步长相加 y_next = self.y_values[-1] + y_step self.x_values.append(x_next) #存放到列表当中,方便下一步的数据可视化,总共有5000个点 self.y_values.append(y_next) #绘制随机漫步图 import matplotlib.pyplot as plt rw = RandomWalk() rw.fill_walk() plt.scatter(rw.x_values, rw.y_values,color='red',s=5) # s表示点的大小 plt.savefig(r'C:\Users\Administrator\Desktop\mysal\Python\random_walk.png') #保存图片 plt.show()

输出图像:

 

模拟多次随机漫步

 

创建一个模块放在  suiji_walk2.py 当中: 

 

#coding=gbk #模拟多次的随机漫步 import matplotlib.pyplot as plt from suiji_walk import RandomWalk while True: rw= RandomWalk() rw.fill_walk() ponits_num = list(range(rw.num_points)) #对随机漫步的进行先后顺序的着色 plt.scatter(rw.x_values, rw.y_values , s=5, c=ponits_num, cmap=plt.cm.Blues, edgecolors='none') plt.show() active = input('\n 请输入 y/n') if active == 'n': break

 

 

 

绘制起点和终点,并隐藏坐标轴

创建一个模块放在  suiji_walk3.py 当中: 

#coding=gbk import matplotlib.pyplot as plt from suiji_walk import RandomWalk #重新绘制起点和终点 while True: rw= RandomWalk() rw.fill_walk() ponits_num = list(range(rw.num_points)) #对随机漫步的进行先后顺序的着色 plt.scatter(rw.x_values, rw.y_values , s=5, c=ponits_num, cmap=plt.cm.Blues, edgecolors='none') #突出起点和终点 plt.scatter(0,0, c='green',edgecolors='none',s=50) plt.scatter(rw.x_values[-1],rw.y_values[-1],c='red',edgecolors= 'none', s=50) #隐藏坐标轴 plt.axes().get_xaxis().set_visible(False) plt.axes().get_yaxis().set_visible(False) #调整尺寸以适应屏幕 #plt.figure(dpi=128,figsize=(6,6)) plt.show() active = input('\n 请输入 y/n') if active == 'n': break

50000个数据点的时候:

 

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3