2301_76352616 2024-03-30 21:59 采纳率: 60%
浏览 3
已结题

为什么随机游走成了一条直线

img

img

img

img

img


随机生成5000个点,画出散点图为什么是一条直线,不像是随机

  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-03-30 21:59
    关注

    引自免费微信小程序:皆我百晓生

    在Python编程语言中,如果你想要生成一个随机游走路径并将其绘制为一条直线,你可以采用以下步骤实现:

    首先,导入所需的库,包括matplotlib.pyplot用于图形处理,numpy用于数学计算和随机数生成,以及random模块提供全局随机数生成功能。

    import numpy as np
    import matplotlib.pyplot as plt
    from random import choice
    

    接下来,创建一个名为RandomWalk的类,继承自numpy.random.RandomState(也可以用numpy.random.MersenneTwister)类,以便实现不同的随机种子和步长。

    class RandomWalk(NumpyRandom.RandomState):
        def __init__(self, num_points=5000, seed=None):
            super().__init__(seed)
            # 初始化 x 和 y 坐标数组
            self.x_value = np.linspace(0, 10, num_points, endpoint=False)
            self.y_value = np.linspace(0, 10, num_points, endpoint=False)
    
        def generate_random_walk(self):
            # 使用 `choice()` 函数从给定列表中选择随机步长和方向
            step_size = choice(range(1, 5)) if self.seed is None else self.seed
            direction = choice([-1, 1]) if self.seed is None else self.seed
            # 根据起点和目标终点,生成新的 x 和 y 坐标
            x_step = step_size * direction
            y_step = step_size * direction
    
            # 定义一个函数来绘制随机游走路径
            def draw_path():
                # 将当前 x 和 y 坐标添加到列表中
                self.x_value.extend(x_step)
                self.y_value.extend(y_step)
    
                # 使用 `scatter()` 函数将生成的 x 和 y 坐标绘制成散点图
                fig, ax = plt.subplots()
                scatter(self.x_value, self.y_value, s=15, c='r', edgecolor='black')
                ax.axis('equal')
                ax.set_xlabel('X-axis')
                ax.set_ylabel('Y-axis')
                ax.set_title(f'Random Walk Path: {self.num_points} points')
    
                plt.show()
    
            # 调用 `generate_random_walk()` 函数生成随机游走路径
            draw_path()
    
    # 创建一个 RandomWalk 实例
    rw = RandomWalk()
    
    # 随机生成5000个 x 和 y 坐标
    random_walk = rw.generate_random_walk()
    
    # 绘制随机游走路径
    draw_path()
    

    在上述代码中,首先定义了一个名为 RandomWalk 的类,它继承自 numpy.random.RandomState 类。然后,在 __init__ 方法中设置了随机种子,如果没有指定,则初始化为全局默认种子 0。这样,每次调用 random_walk.generate_random_walk() 函数时,都会产生一个相同的随机种子。

    generate_random_walk() 函数中,我们使用了 choice() 函数选择一个从0到4之间的随机步长 step_size。同时,我们也通过设置另一个随机方向 -1+1 来确保路径与二维平面上的一条直线上行行走,且该路径向右移动时,长度不变,向左移动时,长度减半。在 direction 变量中,我们指定了正向、反向或径向移动的方向。根据路径的起始点 x_value 和目标终点 y_value,我们将这些值分别填充到一个新的 x_valuey_value 数组中,并使用 scatter() 函数将生成的 x 和 y 坐标绘制成散点图。

    最后,我们创建了一个 RandomWalk 实例,并随机生成了5000个 x 和 y 坐标,然后调用 draw_path() 函数绘制这个随机游走路径。这段代码实现了随机游走路径绘制为一条直线的功能,使用了 Python 的相关库和数据结构。在这个例子中,我使用了 scatter() 函数来创建散点图,但可以替换为其他绘图方法,例如 plot()line()polyline() 等,满足不同场景的需求。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 4月10日
  • 已采纳回答 4月2日
  • 创建了问题 3月30日