You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中生成可重复平铺的随机分布点图?

实现可平铺的随机点分布

要实现指定距离后重复的随机点图,核心是给基础随机点添加周期性偏移量,让基础区域的副本沿x、y轴平铺。以下是具体实现方案:

关键逻辑

  1. 先定义一个基础单元区域(比如你原代码里的-20到20范围,对应单元尺寸40)
  2. 生成该单元内的随机点
  3. 生成多组x、y方向的偏移值,将基础点与这些偏移值相加,得到所有平铺后的点
  4. 绘制全部点,即可看到周期性重复的效果

完整代码

import numpy as np
import matplotlib.pyplot as plt

# 参数配置
n = 3  # 基础单元内的随机点数量
cell_size = 40  # 控制重复的单位距离(对应原区域的宽度)
tile_count = 2  # 向正负方向各平铺的单元数

# 生成基础单元内的随机点
base_points = np.random.uniform(-cell_size/2, cell_size/2, size=(n, 2))

# 生成所有需要的平铺偏移量
x_offsets = np.arange(-tile_count, tile_count+1) * cell_size
y_offsets = np.arange(-tile_count, tile_count+1) * cell_size
# 组合成网格状的偏移对
offsets = np.array(np.meshgrid(x_offsets, y_offsets)).T.reshape(-1, 2)

# 计算所有平铺后的点:基础点 + 每个偏移量
tiled_points = base_points[:, np.newaxis, :] + offsets[np.newaxis, :, :]
tiled_points = tiled_points.reshape(-1, 2)

# 绘图展示
plt.figure(figsize=(8, 8))
plt.scatter(tiled_points[:, 0], tiled_points[:, 1], color='red')
# 调整坐标轴范围,方便观察重复规律
plt.xlim(-tile_count*cell_size - cell_size/2, tile_count*cell_size + cell_size/2)
plt.ylim(-tile_count*cell_size - cell_size/2, tile_count*cell_size + cell_size/2)
plt.grid(True, linestyle='--', alpha=0.5)
plt.title('周期性平铺的随机点分布')
plt.show()

代码说明

  • cell_size:直接决定重复间隔,比如设为40时,每间隔40个单位就会出现完全一致的点分布
  • tile_count:控制平铺范围,数值越大,画面中显示的重复单元越多
  • 用numpy广播机制批量计算所有平铺点,比循环更高效
  • 网格线可以辅助你直观验证点的周期性重复效果

内容的提问来源于stack exchange,提问作者Yeknic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 07:50:25