我想得到一个包含在范围内的随机整数的数组,没有重复,我使用:
randperm(15,3)
输出是:
8, 10, 12
这个函数不使用范围,我想随机值只有10个,例如
谢谢 !
如果您有统计工具箱,则可以使用randsample
而无需替换。
% MATLAB R2017a
LB = 3; % lower bound of range (integer)
UB = 17; % upper bound of range (integer), UB > LB
randsample(LB:UB,3,'false')
@ Wolfie使用randperm
的方法效果很好,不需要工具箱。
LB - 1 + randperm(UB-LB+1,3)
请注意,randi
适用于范围内的均匀分布(离散均匀)整数,但它具有替换样本(可以提供重复)。根据我的知识,这不需要工具箱,但需要结合一个过程来删除重复项并重新采样,直到所有整数都是唯一的。
randi([LB UB],3,1)
注意:如果@Wolfie将其作为答案发布,可以删除@ Wolfie的方法,或者根据共识制作此答案社区维基。