前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用pyplot生成随机漫步

使用pyplot生成随机漫步

作者头像
y191024
发布2022-09-20 19:01:51
2650
发布2022-09-20 19:01:51
举报
文章被收录于专栏:睡不着所以学编程

如何用pyplot生成一个随机漫步

先创建一个random_walk.py

代码语言:javascript
复制
from random import choice

class RandomWalk:
  # 创建一个RandomWalk类
    def __init__(self, points_num):  # 随机漫步的步数
        self.points_num = points_num
        self.x_value = [0]  # 初始化x的坐标为0
        self.y_value = [0]  # 初始化y的坐标为0

    def fill_walk(self):
        # 不断漫步,直到列表达到指定的长度
        while len(self.x_value) < self.points_num:
            # 设置点的漫步方向和漫步距离
            x_direction = choice([-1, 1]) # 当x为-1时向左,x为1时向右
            x_distance = choice([0, 1, 2, 3, 4, 5])  # 随机选择移动的距离
            x_step = x_direction*x_distance  # 包含步数以及方向
            # 例如x_step为-3即表示向左走三步

            y_direction = choice([-1, 1])
            y_distance = choice([0, 1, 2, 3, 4, 5])
            y_step = y_direction * y_distance

            # 拒绝原地踏步
            if x_step == 0 or y_step == 0:
                continue  # 如果满足上面的条件则再执行一遍循环

            #显示下一个点的位置(在上一个点的基础上漫步)
            next_x = self.x_value[-1] + x_step
            next_y = self.y_value[-1] + y_step

            self.x_value.append(next_x)  # 将位移后的点存放进列表中
            self.y_value.append(next_y)

设置好这些属性和方法后要开始模拟随机漫步了

创建一个新的文件

rw_visual.py

代码语言:javascript
复制
from random_walk import RandomWalk
import matplotlib.pyplot as plt

# 不断生成随机漫步图像
while True:
    rw = RandomWalk(50000)
    rw.fill_walk() # 调用漫步方法
    plt.figure(figsize=(10, 6))  # 修改尺寸
    points_num = list(range(rw.points_num))
    #  使用颜色映射,随机漫步的颜色从浅到深,突出路径
    plt.scatter(rw.x_value, rw.y_value, c=points_num, cmap=plt.cm.Blues, s=1)
    plt.title("random walk", fontsize=10)
    plt.scatter(0, 0, c="green", s=50)  #突出起点
    plt.scatter(rw.x_value[-1], rw.y_value[-1], s=50, c="red")  # 突出终点
    plt.axis("off")  # 删除了坐标轴
    plt.show()
    keep_running = input("make another walk?(y/n)")
    if keep_running == "n":
        break

查看效果:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 睡不着所以学编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档