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

Matlab新手求助:基于高斯分布从数组中抽取6个不重复随机数

Matlab实现基于高斯分布权重的不重复随机抽取

实现思路

给数组中每个元素分配高斯分布权重——中间数值(如5、6)权重高,两端数值(如1、10)权重低,再通过带权重的随机抽样函数完成不重复抽取。

完整代码(带注释)

% 定义原始数组
nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

% 生成高斯权重:以数组中间值(5.5)为均值,标准差设为2(可按需调整)
mean_val = mean(nums); % 自动计算数组均值,这里是5.5
std_val = 2; % 标准差越小,中间权重越集中;越大则权重分布越平缓
weights = normpdf(nums, mean_val, std_val);

% 带权重随机抽取6个不重复元素
sampled_nums = randsample(nums, 6, true, weights);

% 输出结果
disp('抽取的6个不重复数:');
disp(sampled_nums);

代码说明

  • normpdf:生成每个元素对应的高斯概率密度值,作为抽样权重,中间元素的密度值天然高于两端。
  • randsample:Matlab内置的抽样函数,参数true表示带权重抽样,最后一个参数传入权重数组,自动完成不重复抽取。
  • 调整std_val可以改变权重集中程度:比如把std_val改成1,中间元素被抽到的概率会更高;改成3则权重分布更均匀。

示例输出

运行代码可能得到类似符合要求的结果:

1, 4, 5, 7, 8, 10

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 07:20:11