randi

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

Синтаксис

X = randi(imax)
X = randi(imax,n)
X = randi(imax,sz1,...,szN)
X = randi(imax,sz)
X = randi(imax,classname)
X = randi(imax,n,classname)
X = randi(imax,sz1,...,szN,classname)
X = randi(imax,sz,classname)
X = randi(imax,'like',p)
X = randi(imax,n,'like',p)
X = randi(imax,sz1,...,szN,'like',p)
X = randi(imax,sz,'like',p)
X = randi([imin,imax],___)

Описание

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

пример

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

пример

X = randi(imax,sz1,...,szN) возвращает sz1...-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-by-n массив типа данных classname.

пример

X = randi(imax,sz1,...,szN,classname) возвращает sz1...-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-by-n массив как p.

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

пример

X = randi(imax,sz,'like',p) возвращает массив как p, где вектор размера sz задает size(X).

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

Примеры

свернуть все

Сгенерируйте матрицу 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 отрицательно, это эквивалентно 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, 'как', p)

Типы данных: единственный | удваиваются | int8 | int16 | int32 | uint8 | uint16 | uint32
Поддержка комплексного числа: Да

Советы

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

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

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

Представленный в R2008b

Была ли эта тема полезной?