matlab中如何实现自定义的输出随机数

2025-12-17 22:49:06
推荐回答(1个)
回答1:

num=200; %生成随机数的个数
i=1; %不相同元素的间隔
out=zeros(1,num); %先为out分配空间
b=randperm(100);
b=b(1:i); %b为1-100中i个不重复的随机数
for k=1:num
c=setdiff(1:100,b); %从1-100中扣除b中的i个数
new=c(randi(100-i,1)); %new是剩下的100-i个数中随机抽取的一个
out(k)=new; %将新生成的new保存到out矩阵
b=[b(2:end) new]; %去除b中的第一个数,将new放到b最后
end

num用于输入要生成随机数的个数
i是不同元素的要求间隔
的到的out就是符合条件的随机矩阵

主要就是利用b去储存前i个已经生成的随机数

循环:
然后从1-100的100个中取出b中的i个数
从剩下的数中随机抽取1个数,这个数肯定不会和前面的i个数重复
保存这个新生成的随机数
舍弃b中的第一个数,将新随机数放到b末尾
新的b还是i个不重复的随机数
然后重复循环,直到生成的随机数个数满足num的要求