randi

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

Описание

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

пример

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

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

пример

X = randi(imax,sz,'like',p) возвращает массив, подобный p где size вектор 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 functions), чтобы задать настройки генератора случайных чисел. Для получения дополнительной информации смотрите Заменить обескураженные синтаксисы 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

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

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

Совет

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

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

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

.
Введенный в R2008b