Matlab: случайные целые числа из диапазона без повторений - PullRequest
2 голосов
/ 18 марта 2019

Я хочу получить массив с рандомизированным целым числом, включенным в диапазон без повтора, я использовал:

randperm(15,3)

вывод:

8, 10, 12

Эта функция не использует диапазон, я бы хотел, чтобы случайные значения были только от 10, например

Спасибо!

1 Ответ

4 голосов
/ 18 марта 2019

Если у вас есть набор инструментов статистики, вы можете использовать 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 опубликует его как ответ, или может сделать этот ответ вики-сообществом на основе консенсуса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...