程序员在旅途

用这生命中的每一秒,给自己一个不后悔的未来!

0%

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

一、概述

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

二、代码演示

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
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()

绘图结果