Python中使用random随机函数与Matplotlib库绘制随机漫步图

                                                       Python中使用random随机函数与Matplotlib库绘制随机漫步图

一、概述

       随机现象在我们的生活中并不少见,我们常见的一次抛硬币的正反面,股票的走势等等,都是随机事件。这些不确定性事件给我们带来恐慌的同时也带了希望,让我们即使在很困难的情境下也仍然相信机会会降临在我们身上。随机漫步理论最初源于经济学中,后来逐步溢出到其他的领域。在本文中,通过绘制随机漫步图直观的查看随机现象,也更进一步了解如何使用随机函数以及绘图功能。(更多内容,可参阅程序员在旅途)

二、代码演示

from random import choice, randint
import matplotlib.pyplot as plt

class RandomWalk():
    def __init__(self, walk_nums=100):
        self.walk_nums = walk_nums  # 移动的总次数
        self.x_values = [0]  # x轴方向轨迹坐标列表
        self.y_values = [0]  # y轴方向轨迹坐标列表

    def move(self):
        while len(self.x_values) < self.walk_nums:  # 直到轨迹坐标等于设置的移动次数为止
            x_direction = choice([-1, 1])  # x轴运动的方向,从-1,1中随机选择一个值
            x_distance = randint(0, 10)  # x轴运动的距离
            x_step = x_direction * x_distance

            y_direction = choice([-1, 1])  # y轴运动的方向
            y_distance = randint(0, 10)  # y轴运动的距离
            y_step = y_direction * y_distance

            if x_step == 0 and y_step == 0:
                continue  # 略去坐标原点的值

            self.x_values.append(self.x_values[-1] + x_step)  # 将生成的点添加到坐标列表汇总
            self.y_values.append(self.y_values[-1] + y_step)

# 开始绘制图像
randomwalk = RandomWalk(10000)
randomwalk.move()

point_numbers = range(randomwalk.walk_nums)  # 绘图的时候用到这个参数,代表各个点的颜色都不尽相同,配合 cmap 参数使用。

plt.scatter(randomwalk.x_values, randomwalk.y_values, c=point_numbers, cmap=plt.cm.Blues, edgecolors='none',
            s=15)  # c 点的颜色个数,cmap 颜色值映射

# 起点和终点高亮
plt.scatter(randomwalk.x_values[0], randomwalk.y_values[0], c='red', s=100)  # c代表颜色,s代表大小。
plt.scatter(randomwalk.x_values[-1], randomwalk.y_values[-1], c='red', s=100)

# 隐藏x、y轴
plt.axes().get_xaxis().set_visible(True)
plt.axes().get_yaxis().set_visible(True)
# 显示运动轨迹图
plt.show()

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值