Matlab:无重复范围内的随机整数

时间:2019-03-18 15:29:40

标签: matlab random integer range

我想使用不重复的范围内包含随机整数的数组,我使用过:

randperm(15,3)

输出为:

8, 10, 12

此函数未使用范围,我希望仅从10个随机值中进行选择。

谢谢!

1 个答案:

答案 0 :(得分:4)

如果拥有统计信息工具箱,则可以直接使用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将其发布为答案,或者可以根据共识使此答案成为社区Wiki,则将删除@Wolfie的方法。