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

MATLAB:从三个时段字符串数组随机生成1000元素数组的方法

MATLAB生成随机抽取的1000个时段元素数组

这里有两种简单易懂的实现方法,完美匹配你的需求,我会一步步拆解给你看:

第一步:先补全三个时段的数组

你已经给出了7点档的数组,我先把8点、9点档的示例数组补上(你可以根据实际数据修改):

% 初始化三个时段的出发时间字符串数组
SevenOclock = ["07:00","07:05","07:10","07:15","07:20","07:25","07:30","07:35","07:40","07:45"];
EightOclock = ["08:00","08:10","08:20","08:30","08:40","08:50"]; % 可按需修改元素
NineOclock = ["09:00","09:10","09:20","09:30","09:40","09:50"]; % 可按需修改元素

方法一:合并数组 + 随机索引抽取

这是最基础的实现方式,逻辑清晰:

  1. 把三个数组合并成一个候选时间池
  2. 生成1000个范围在候选池长度内的随机整数索引
  3. 用索引从候选池中抽取元素,得到最终数组

代码如下:

% 合并三个数组为一个完整的候选池
allTimes = [SevenOclock, EightOclock, NineOclock];

% 生成1000个随机索引(范围1到候选池的元素总数)
randomIndices = randi(length(allTimes), 1, 1000);

% 根据索引抽取元素,得到包含1000个随机元素的数组
resultArray = allTimes(randomIndices);

方法二:使用randsample函数(更简洁)

MATLAB的randsample函数可以直接帮你完成"有放回随机抽样",代码更短:

% 同样先合并成候选池
allTimes = [SevenOclock, EightOclock, NineOclock];

% 直接抽取1000个元素,第三个参数true表示允许重复抽取(必须开,因为总元素数远少于1000)
resultArray = randsample(allTimes, 1000, true);

额外扩展:给不同时段设置抽取权重

如果需要让某个时段的元素出现概率更高(比如7点档占50%,8点档30%,9点档20%),可以给randsample加权重参数:

% 定义每个时段的整体权重
sevenWeight = 0.5;
eightWeight = 0.3;
nineWeight = 0.2;

% 计算每个元素对应的权重(保证每个时段内的元素权重均等)
weights = [
    ones(1, length(SevenOclock)) * sevenWeight / length(SevenOclock), ...
    ones(1, length(EightOclock)) * eightWeight / length(EightOclock), ...
    ones(1, length(NineOclock)) * nineWeight / length(NineOclock)
];

% 带权重的随机抽样
resultArray = randsample(allTimes, 1000, true, weights);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:42:18