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

如何为线性同余生成器绘制带周期重复竖线的循环图?

线性同余生成器周期重复标记绘图实现

你需要先定位序列中所有等于种子X0的重复位置(排除初始的第一个值),再在这些位置绘制竖线标记周期重复点。下面是修改后的完整代码,包含完整绘图逻辑:

clear all; clc

% 输入参数
m = 59;         % 模数
a = 17;         % 乘数
c = 43;         % 增量
X0 = 27;        % 种子
n = 100;        % 采样长度

% 初始化序列
y = [X0 zeros(1,n-1)];

% 递归生成序列
for i = 2:n
    y(i) = mod(a*y(i-1)+c,m);
end

x = 0:1:n-1;

% 绘制原始序列折线图
figure;
plot(x, y, '-o', 'LineWidth', 1.2, 'MarkerSize', 4);
hold on; % 保留当前画布,用于叠加竖线

% 筛选出所有周期重复的位置(跳过初始种子点)
repeat_indices = find(y == X0);
repeat_indices = repeat_indices(repeat_indices > 1);

% 获取序列最值,确定竖线上下范围
y_min = min(y);
y_max = max(y);

% 在每个重复位置绘制红色虚线竖线
for idx = repeat_indices
    x_pos = x(idx);
    plot([x_pos, x_pos], [y_min, y_max], 'r--', 'LineWidth', 1);
end

% 图表美化
xlabel('序列索引');
ylabel('生成值');
title('线性同余生成器序列(周期重复处标记竖线)');
grid on;
hold off;

关键逻辑说明

  • 定位重复点:用find(y == X0)抓取所有等于种子的索引,再排除第一个初始值,剩下的就是周期重复的触发点。
  • 绘制竖线:通过plot([x_pos, x_pos], [y_min, y_max])生成垂直于x轴的线段,用红色虚线区分,清晰标记周期循环的起点。
  • 画布锁定:hold on和hold off确保原始序列图和标记竖线能在同一张图中显示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 23:35:18