randi

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

Описание

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

пример

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

пример

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,typename) возвращает псевдослучайное целое число где typename задает тип данных. typename может быть 'single''double'int8uint8int16uint16int32, или 'uint32'.

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

пример

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

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

пример

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

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

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'единственныйint8uint8int16uint16int32uint32, или имя другого класса, который обеспечивает 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 определяется внутренними настройками универсального генератора псевдослучайного числа, который лежит в основе randrandi, и randn. Можно управлять этим генератором, используя функцию rng.

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

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

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