随机漫步

来源:互联网 发布:三国志9pk版优化伴侣 编辑:程序博客网 时间:2024/04/28 04:59
#encoding:utf-8from random import choiceimport matplotlib.pyplot as pltclass RandomWalk():    '''一个生成随机漫步数据的类'''    def __init__(self, num_points = 50000):        '''初始化随机漫步的属性'''        self.num_points = num_points        #所有随机漫步都始于(0,0)_        self.x_values = [0]        self.y_values = [0]    def fill_walk(self):        '''计算随机漫步包含的所有的点'''        #不断漫步,直到列表达到指定的长度        while len(self.x_values) < self.num_points:            x_step = self.get_walk()            y_step = self.get_walk()            #拒绝原地踏步            if x_step == 0 and y_step == 0:                continue            #计算下一个点的x和y值            next_x = self.x_values[-1] + x_step            next_y = self.y_values[-1] + y_step            self.x_values.append(next_x)            self.y_values.append(next_y)    def get_walk(self):        direction = choice([1, -1])        distance = choice([0, 1, 2, 3, 4])        step = direction * distance        return stepwhile True:    rw = RandomWalk()    rw.fill_walk()    #设置绘图窗口的尺寸    plt.figure(dpi = 128, figsize = (10, 6))    #dpi为分辨率,figsize为窗口尺寸    #绘制点并将图形显示出来    point_numbers = list(range(rw.num_points))    plt.scatter(rw.x_values, rw.y_values, c = point_numbers, cmap = plt.cm.Blues, edgecolor = 'none', s = 1)    plt.scatter(0, 0, c = 'green', edgecolors = 'none', s = 100)      #重新绘制起点和终点    plt.scatter(rw.x_values[-1], rw.y_values[-1], c = 'green', edgecolors = 'none', s = 100)    #隐藏坐标轴    plt.axes().get_xaxis().set_visible(False)    plt.axes().get_yaxis().set_visible(False)    plt.show()    keep_running = input("Make another walk? (y/n): ")    if keep_running == 'n':        break

这里写图片描述

原创粉丝点击