Если у вас есть набор инструментов статистики, вы можете использовать randsample
без замены.
% MATLAB R2017a
LB = 3; % lower bound of range (integer)
UB = 17; % upper bound of range (integer), UB > LB
randsample(LB:UB,3,'false')
@ Вольф метод, использующий randperm
, работает хорошо и не требует набора инструментов .
LB - 1 + randperm(UB-LB+1,3)
Обратите внимание, что randi
хорошо работает для равномерно распределенных (дискретных равномерных) целых чисел в диапазоне, но он выбирает с заменой (может давать дубликаты).Насколько мне известно, это не требует набора инструментов, но потребует объединения с процедурой для удаления дубликатов и повторной выборки, пока все целые числа не станут уникальными.
randi([LB UB],3,1)
Примечание: удалит метод @ Wolfie, если @Wolfie опубликует его как ответ, или может сделать этот ответ вики-сообществом на основе консенсуса.