matlab⽣成0-1之间的随机数(不同区间权重不同)
近期在完成⼀项项⽬时,遇到⼀个问题,就是⽣成0-1之间的随机数,且要求不同区间之间的权重不同,如0-0.8权重为0.3,0.8-1权重为0.7。由此背景,基于MATLAB的rand函数写了⼀个分区间不同权重随机数⽣成函数。
%%
%权重区间随机数⽣成函数
function [SX]=SS(sn,w,smax)  %sn⽣成随机数的个数,w⼤区间所在的概率,smax⼤区间起始位置
SX=zeros(sn,1);
for i=1:sn
t=rand(1,1);matlab生成随机数
if t<w
SX(i,1)=rand(1,1)*(1-smax)+smax;
else
SX(i,1)=rand(1,1)*smax;
end
end
end
其中sn,为要⽣成随机数的个数,⽣成的随机数构成⼀个列向量。w为⼤区间的概率,如0.8-1我们期望概率为0.7,则设定w=0.7;smax为⼤区间的其实位置,0.8-1,则设定smax=0.8.
clc;
clear all;
t=SS(100,0.7,0.8);
function [SX]=SS(sn,w,smax)  %sn⽣成随机数的个数,w⼤区间所在的概率,smax⼤区间起始位置
SX=zeros(sn,1);
for i=1:sn
t=rand(1,1);
if t<w
SX(i,1)=rand(1,1)*(1-smax)+smax;
else
SX(i,1)=rand(1,1)*smax;
end
end
end

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。