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

如何在MATLAB中按指定权重从4个向量生成100个随机向量?

在MATLAB中按指定加权概率生成随机向量集

这事儿在MATLAB里实现起来很顺手,我给你一步步拆解,保证你能直接复用代码:

步骤1:先把原始向量整理成矩阵

咱先把你给出的4个向量合并成一个矩阵,这样后续方便通过索引来提取。每个向量作为矩阵的一行就行:

% 定义原始向量
x1 = [-27.445,-26.960,-26.635,-26.431,-26.315];
x2 = [-25.673,-25.497,-25.449,-25.491,-25.593];
x3 = [-29.310,-28.201,-27.240,-26.399,-25.654];
x4 = [-28.761,-27.103,-26.290,-25.605,-25.025];

% 合并成4行5列的矩阵
vec_matrix = [x1; x2; x3; x4];

步骤2:生成符合加权概率的索引

MATLAB自带的randsample函数完美适配这个需求,它可以按照指定的权重从样本里随机抽取元素。我们需要生成100个索引(对应4个向量的序号1-4),权重分别是40%、30%、20%、10%:

% 定义权重:x1(40%), x2(30%), x3(20%), x4(10%)
weights = [0.4, 0.3, 0.2, 0.1];
% 生成100个符合权重的索引
indices = randsample(1:4, 100, true, weights);

这里的true参数表示允许重复抽取(因为我们需要生成100个,远大于4个原始向量)。

步骤3:根据索引生成最终的100个随机向量

有了索引之后,直接从合并好的矩阵里按索引提取行就行,最后得到的是一个100行5列的矩阵,每一行就是一个随机生成的向量:

% 生成最终的100个向量
result_vectors = vec_matrix(indices, :);

可选:验证概率是否符合要求

如果你想确认生成的结果确实符合指定的权重,可以统计每个向量出现的次数:

% 统计每个索引出现的次数
counts = histcounts(indices, 1:4);
% 计算占比
percentages = counts / 100 * 100;
disp('各向量出现的占比:');
disp(['x1: ', num2str(percentages(1)), '%']);
disp(['x2: ', num2str(percentages(2)), '%']);
disp(['x3: ', num2str(percentages(3)), '%']);
disp(['x4: ', num2str(percentages(4)), '%']);

运行这段代码后,你会看到结果基本接近你指定的40%/30%/20%/10%(因为是随机抽样,会有小范围波动,样本量越大越接近设定值)。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:16:42