Matlab:来自一个没有重复的范围的随机整数

问题描述 投票:1回答:1

我想得到一个包含在范围内的随机整数的数组,没有重复,我使用:

randperm(15,3)

输出是:

8, 10, 12

这个函数不使用范围,我想随机值只有10个,例如

谢谢 !

matlab random integer range
1个回答
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将其作为答案发布,可以删除@ Wolfie的方法,或者根据共识制作此答案社区维基。

© www.soinside.com 2019 - 2024. All rights reserved.