exponenta event banner

randi

Равномерно распределенные псевдослучайные целые числа

Описание

X = randi(imax) возвращает псевдослучайное скалярное целое число между 1 и imax.

пример

X = randi(imax,n) возвращает nоколо-n матрица псевдослучайных целых чисел, взятых из дискретного равномерного распределения на интервале [1,imax].

пример

X = randi(imax,sz1,...,szN) возвращает sz1-by-... -by-szN массив, где sz1,...,szN указывает размер каждого размера. Например, randi(10,3,4) возвращает массив псевдослучайных чисел 3 на 4 в диапазоне от 1 до 10.

пример

X = randi(imax,sz) возвращает массив с вектором размера sz определяет size(X). Например, randi(10,[3,4]) возвращает массив псевдослучайных чисел 3 на 4 в диапазоне от 1 до 10.

X = randi(imax,classname) возвращает псевдослучайное целое число, где classname указывает тип данных. classname может быть 'single', 'double', 'int8', 'uint8', 'int16', 'uint16', 'int32', или 'uint32'.

X = randi(imax,n,classname) возвращает nоколо-n массив типа данных classname.

пример

X = randi(imax,sz1,...,szN,classname) возвращает sz1-by-... -by-szN массив типа данных classname.

X = randi(imax,sz,classname) возвращает массив с вектором размера sz определяет size(X) и classname определяет class(X).

X = randi(imax,'like',p) возвращает псевдослучайное целое число типа p; то есть с одним и тем же типом данных (классом).

X = randi(imax,n,'like',p) возвращает nоколо-n массив, как p.

X = randi(imax,sz1,...,szN,'like',p) возвращает sz1-by-... -by-szN массив, как p.

пример

X = randi(imax,sz,'like',p) возвращает массив, подобный p где вектор размера sz определяет size(X).

X = randi([imin,imax],___) возвращает массив, содержащий целые числа, полученные из дискретного равномерного распределения на интервале [imin,imax], используя любой из вышеперечисленных синтаксисов.

X = randi(s,___) генерирует целые числа из потока случайных чисел s вместо глобального потока по умолчанию. Чтобы создать поток, используйте RandStream. Определить s за которым следует любая из комбинаций аргументов в предыдущих синтаксисах, за исключением тех, которые включают 'like'. Этот синтаксис не поддерживает 'like' вход.

Примеры

свернуть все

Создайте матрицу 5 на 5 случайных целых чисел от 1 до 10. Первый вход в randi указывает наибольшее целое число в интервале выборки (наименьшее целое число в интервале равно 1).

r = randi(10,5)
r = 5×5

     9     1     2     2     7
    10     3    10     5     1
     2     6    10    10     9
    10    10     5     8    10
     7    10     9    10     7

Создание вектора столбца 10 на 1 равномерно распределенных случайных чисел из интервала выборки [-5,5].

r = randi([-5,5],10,1)
r = 10×1

     3
     4
    -4
     5
     1
    -4
    -2
     1
     5
     5

Сохраните текущее состояние генератора случайных чисел и создайте вектор случайных чисел 1 на 5.

s = rng;
r = randi(10,1,5)
r = 1×5

     9    10     2    10     7

Восстановление состояния генератора случайных чисел в s, а затем создать новый вектор 1 на 5 случайных целых чисел. Значения те же, что и ранее.

rng(s);
r1 = randi(10,1,5)
r1 = 1×5

     9    10     2    10     7

Всегда использовать rng функция (а не rand или randn функции) для задания настроек генератора случайных чисел. Дополнительные сведения см. в разделе Замена обескураженных синтаксисов rand и randn.

Создайте массив 3 на 2 на 3 равномерно распределенных случайных чисел от 1 до 500.

X = randi(500,[3,2,3])
X = 
X(:,:,1) =

   408   457
   453   317
    64    49


X(:,:,2) =

   140   483
   274    79
   479   486


X(:,:,3) =

   479    71
   243   211
   401   458

Создайте вектор 1 на 4 случайных чисел, элементы которых имеют тип int16.

r = randi(100,1,4,'int16')
r = 1x4 int16 row vector

   82   91   13   92

class(r)
ans = 
'int16'

Создайте матрицу равномерно распределенных случайных чисел от 1 до 10 с тем же размером, что и существующий массив.

A = [3 2; -2 1];
sz = size(A);
X = randi(10,sz)
X = 2×2

     9     2
    10    10

Обычно две предыдущие строки кода объединяются в одну строку:

X = randi(10,size(A));

Создайте матрицу 2 на 2 из 8-битных целых чисел со знаком.

p = int8([3 2; -2 1]);

Создайте массив случайных целых чисел того же размера и типа данных, что и p.

X = randi(10,size(p),'like',p)
X = 2x2 int8 matrix

    9    2
   10   10

class(X)
ans = 
'int8'

Входные аргументы

свернуть все

Наибольшее целое число в интервале выборки, указанное как положительное целое число. randi извлекает значения из равномерного распределения в интервале выборки [1,imax].

Пример: randi(10,5)

Наименьшее целое число в интервале выборки, указанное как скалярное целое число.

Оба imin и imax должны быть целыми числами, удовлетворяющими iminimax.

Например, randi([50,100],5) возвращает матрицу случайных целых чисел 5 на 5 между (включительно) 50 и 100.

Размер квадратной матрицы, заданный как целое значение.

  • Если n является 0, то X является пустой матрицей.

  • Если n отрицательный, то он рассматривается как 0.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Размер каждого измерения, определяемый как отдельные аргументы целочисленных значений.

  • Если размер любого размера равен 0, то X является пустым массивом.

  • Если размер любого размера отрицательный, то он обрабатывается как 0.

  • За пределами второго измерения randi игнорирует конечные размеры размером 1. Например, randi([5,10],3,1,1,1) создает вектор 3 на 1 случайных целых чисел от 5 до 10.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Размер каждого измерения, заданный как вектор строки целых значений. Каждый элемент этого вектора указывает размер соответствующего размера:

  • Если размер любого размера равен 0, то X является пустым массивом.

  • Если размер любого размера отрицательный, то он обрабатывается как 0.

  • За пределами второго измерения randi игнорирует конечные размеры размером 1. Например, randi([5,10],[3 1 1 1]) создает вектор 3 на 1 случайных целых чисел от 5 до 10.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Выходной класс, указанный как 'double', 'single', 'int8', 'uint8', 'int16', 'uint16', 'int32', 'uint32', или имя другого класса, предоставляющего randi поддержка.

Пример: randi(5,5,'int8')

Типы данных: char

Прототип создаваемого массива, указанный как числовой массив.

Пример: randi(5,5,'like',p)

Типы данных: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32

Поток случайных чисел, указанный как RandStream объект.

Пример: s = RandStream('dsfmt19937'); randi(s,[5,10],[3 1])

Совет

  • Последовательность номеров, производимых randi определяется внутренними настройками генератора однотипных псевдослучайных чисел, лежащего в основе rand, randi, и randn. Можно управлять генератором общих случайных чисел с помощью rng.

  • Массивы, возвращенные randi может содержать повторяющиеся целочисленные значения. Такое поведение иногда называют выборкой с заменой. Использовать randperm если требуются все уникальные значения.

Расширенные возможности

.
Представлен в R2008b