- MATLAB создает случайную матрицу
- Сгенерируйте случайные числа, используя функцию rand() в MATLAB
- Сгенерируйте случайные числа, используя функцию randi() в MATLAB
- Сгенерируйте случайные числа, используя функцию randn() в MATLAB
- Сгенерируйте случайные числа, используя функцию randperm() в MATLAB
- Сгенерируйте случайные числа с помощью функции betarnd() в MATLAB
- Сгенерируйте случайные числа, используя функцию random() в MATLAB
- randi
- Syntax
- Description
- Examples
- Square Matrix of Random Integers
- Random Integers Within Specified Interval
- Control Random Number Generation
- 3-D Array of Random Integers
- Random Integers of Other Data Types
- Size Defined by Existing Array
- Size and Numeric Data Type Defined by Existing Array
- Input Arguments
- imax — Largest integer in sample interval positive integer
- imin — Smallest integer in sample interval 1 (default) | scalar integer
- n — Size of square matrix integer value
- sz1. szN — Size of each dimension (as separate arguments) two or more integer values
- sz — Size of each dimension (as a row vector) integer values
- typename — Data type (class) to create ‘double’ (default) | ‘single’ | ‘int8’ | ‘uint8’ | .
- p — Prototype of array to create numeric array
- s — Random number stream RandStream object
- Extended Capabilities
- C/C++ Code Generation Generate C and C++ code using MATLAB® Coder™.
- Thread-Based Environment Run code in the background using MATLAB® backgroundPool or accelerate code with Parallel Computing Toolbox™ ThreadPool .
- GPU Arrays Accelerate code by running on a graphics processing unit (GPU) using Parallel Computing Toolbox™.
- Distributed Arrays Partition large arrays across the combined memory of your cluster using Parallel Computing Toolbox™.
- See Also
- Topics
- Open Example
MATLAB создает случайную матрицу
В этом руководстве будет обсуждаться, как сгенерировать или создать случайные числа с помощью функций rand() , randi() , randn() , randperm() , betarand() и random() . в MATLAB.
Сгенерируйте случайные числа, используя функцию rand() в MATLAB
Если вы хотите сгенерировать равномерно распределенные случайные числа, вы можете использовать функцию rand() в MATLAB, которая генерирует случайные числа от 0 до 1. Вы также можете указать размер матрицы, содержащей случайные значения, и каждое значение будет от 0 до 1, которые вы можете масштабировать в соответствии с вашими требованиями, умножая их с помощью масштабатора. Например, сгенерируем матрицу случайных значений 2 на 2 с помощью функции rand() . См. Код ниже.
Как видно из выходных данных, создается матрица 2 на 2, содержащая случайные значения от 0 до 1. Если вы хотите указать диапазон случайных чисел, вы должны использовать приведенную ниже формулу.
В этой формуле a — это нижний предел, b — верхний предел, а n — длина случайных чисел. Например, давайте сгенерируем десять случайных чисел в диапазоне от 2 до 8. См. Код ниже.
Есть десять случайных чисел в диапазоне от 2 до 8. Если вам нужны только целые числа на выходе, вы можете преобразовать эти случайные числа в целые, используя функцию round() , которая округляет число с плавающей запятой до ближайшего целого. . Вы также можете клонировать размер и тип данных случайных чисел из существующего массива, используя функцию size() для размера и свойство like для типа данных. Например, давайте создадим массив и сгенерируем случайные значения в соответствии с размером и типом данных этого массива. См. Код ниже.
Размер и тип данных массива и случайных чисел совпадают. Проверьте эту ссылку, чтобы узнать больше о функции rand() .
Сгенерируйте случайные числа, используя функцию randi() в MATLAB
Вышеупомянутая функция генерирует случайные числа с плавающей запятой, но если вы хотите сгенерировать случайные целые числа, вы можете использовать функцию randi() в MATLAB, которая генерирует случайные целые числа от 1 до заданного целого числа, которое вы можете указать как первый аргумент в функции randi() . Вы также можете указать размер выходной матрицы, содержащей случайные значения, в качестве второго и третьего аргумента. Например, давайте сгенерируем матрицу 3 на 3, содержащую случайные целые числа от 1 до 15. См. Код ниже.
Матрица имеет размер 3 на 3 и содержит случайные целые числа от 1 до 15. Вы также можете генерировать случайные целые числа между определенным диапазоном, и вам просто нужно передать диапазон в квадратных скобках в качестве первого аргумента randi() функция. Например, давайте сгенерируем 10 случайных чисел от -10 до 10. См. Код ниже.
Существует десять случайных чисел в диапазоне от -10 до 10. Вы также можете определить тип данных целых чисел, передав имя типа данных в функции randi() . Вы можете выбрать следующие типы данных: ‘single’ , ‘double’ , ‘int8’ , ‘uint8’ , ‘int16’ , ‘uint16’ , ‘int32’ . , или ‘uint32’ . Вы можете определить размер случайных чисел из размера существующего массива с помощью функции size() и числового типа данных с помощью свойства like . Например, давайте сгенерируем матрицу случайных значений в зависимости от размера и числового типа данных существующего массива. См. Код ниже.
Размер и тип данных массива и случайных чисел совпадают. Проверьте эту ссылку, чтобы узнать больше о функции randi() .
Сгенерируйте случайные числа, используя функцию randn() в MATLAB
Если вы хотите сгенерировать нормально распределенные случайные числа, вы можете использовать функцию randn() в MATLAB. Функция randn() аналогична функции rand() , но отличается только типом распределения. Функция rand() генерирует равномерно распределенные случайные числа, а функция randn() генерирует нормально распределенные случайные числа. Вы можете использовать любую из этих функций в зависимости от ваших требований. Проверьте эту ссылку, чтобы узнать больше о функции randn .
Сгенерируйте случайные числа, используя функцию randperm() в MATLAB
Если вы хотите сгенерировать случайную перестановку целых чисел, вы можете использовать функцию randperm() в MATLAB. Случайная перестановка целых чисел будет от 1 до определенного числа, которое вы можете определить в функции randperm() в качестве первого аргумента. Вы также можете определить количество целых чисел, которые хотите сгенерировать, в качестве второго аргумента функции. Например, давайте сгенерируем случайную перестановку 6 уникальных целых чисел. См. Код ниже.
Все целые числа уникальны и находятся в диапазоне от 1 до 10. Обратите внимание, что функция randperm() аналогична функции randi() с той разницей, что randperm() генерирует уникальные целые числа, тогда как в randperm() randi() целые числа могут повторяться. Проверьте эту ссылку, чтобы узнать больше о функции randperm .
Сгенерируйте случайные числа с помощью функции betarnd() в MATLAB
Если вы хотите сгенерировать случайные числа из бета-распределения, вы можете использовать функцию betarnd() в MATLAB. Эта функция генерирует случайные целые числа, заданные первым и вторым аргументом: векторы, матрицы или массивы одинакового размера. Например, давайте сгенерируем матрицу случайных чисел размером 1 на 5 из бета-распределения, используя в качестве входных данных два вектора. См. Код ниже.
Вы также можете указать размер выходной матрицы, задав его в третьем и четвертом аргументах функции betarnd() . Посетите эту ссылку, чтобы узнать больше о функции betarnd() .
Сгенерируйте случайные числа, используя функцию random() в MATLAB
Если вы хотите сгенерировать случайные числа из указанного типа распределения, вы можете использовать функцию random() в MATLAB. Вы должны определить имя распределения в качестве первого аргумента, а затем после этого вам необходимо передать параметры распределения. Например, давайте сгенерируем нормально распределенные случайные числа, используя значение сигмы 0 и значение mu 1, используя функцию random() . См. Код ниже.
Вы можете определить необходимое имя дистрибутива в функции. Вы можете использовать множество типов распределений, например: Бета , Биномиальное , Экспоненциальное , Гамма и многие другие. Посетите эту ссылку, чтобы узнать больше о функции random .
Источник
randi
Uniformly distributed pseudorandom integers
Syntax
Description
X = randi( imax ) returns a pseudorandom scalar integer between 1 and imax .
X = randi( imax , n ) returns an n -by- n matrix of pseudorandom integers drawn from the discrete uniform distribution on the interval [ 1 , imax ].
X = randi( imax , sz1. szN ) returns an sz1 -by-. -by- szN array where sz1. szN indicates the size of each dimension. For example, randi(10,3,4) returns a 3-by-4 array of pseudorandom integers between 1 and 10.
X = randi( imax , sz ) returns an array where size vector sz defines size(X) . For example, randi(10,[3,4]) returns a 3-by-4 array of pseudorandom integers between 1 and 10.
X = randi( imax , typename ) returns a pseudorandom integer where typename specifies the data type. typename can be ‘single’ , ‘double’ , ‘int8’ , ‘uint8’ , ‘int16’ , ‘uint16’ , ‘int32’ , or ‘uint32’ .
X = randi( imax , n , typename ) returns an n -by- n array of data type typename .
X = randi( imax , sz1. szN , typename ) returns an sz1 -by-. -by- szN array of data type typename .
X = randi( imax , sz , typename ) returns an array where size vector sz defines size(X) and typename defines class(X) .
X = randi( imax ,’like’, p ) returns a pseudorandom integer like p ; that is, with the same data type (class).
X = randi( imax , n ,’like’, p ) returns an n -by- n array like p .
X = randi( imax , sz1. szN ,’like’, p ) returns an sz1 -by-. -by- szN array like p .
X = randi( imax , sz ,’like’, p ) returns an array like p where size vector sz defines size(X) .
X = randi([ imin , imax ], ___ ) returns an array containing integers drawn from the discrete uniform distribution on the interval [ imin , imax ], using any of the above syntaxes.
X = randi( s , ___ ) generates integers from random number stream s instead of the default global stream. To create a stream, use RandStream . Specify s followed by any of the argument combinations in previous syntaxes, except for the ones that involve ‘like’ . This syntax does not support the ‘like’ input.
Examples
Square Matrix of Random Integers
Generate a 5-by-5 matrix of random integers between 1 and 10. The first input to randi indicates the largest integer in the sampling interval (the smallest integer in the interval is 1).
Random Integers Within Specified Interval
Generate a 10-by-1 column vector of uniformly distributed random integers from the sample interval [-5,5] .
Control Random Number Generation
Save the current state of the random number generator and create a 1-by-5 vector of random integers.
Restore the state of the random number generator to s , and then create a new 1-by-5 vector of random integers. The values are the same as before.
Always use the rng function (rather than the rand or randn functions) to specify the settings of the random number generator. For more information, see Replace Discouraged Syntaxes of rand and randn.
3-D Array of Random Integers
Create a 3-by-2-by-3 array of uniformly distributed random integers between 1 and 500.
Random Integers of Other Data Types
Create a 1-by-4 vector of random numbers whose elements are of type int16 .
Size Defined by Existing Array
Create a matrix of uniformly distributed random integers between 1 and 10 with the same size as an existing array.
It is a common pattern to combine the previous two lines of code into a single line:
Size and Numeric Data Type Defined by Existing Array
Create a 2-by-2 matrix of 8-bit signed integers.
Create an array of random integers that is the same size and data type as p .
Input Arguments
imax — Largest integer in sample interval
positive integer
Largest integer in sample interval, specified as a positive integer. randi draws values from the uniform distribution in the sample interval [1,imax] .
Example: randi(10,5)
imin — Smallest integer in sample interval
1 (default) | scalar integer
Smallest integer in sample interval, specified as a scalar integer.
Both imin and imax must be integers that satisfy imin ≤ imax .
For example, randi([50,100],5) returns a 5-by-5 matrix of random integers between (and including) 50 and 100.
n — Size of square matrix
integer value
Size of square matrix, specified as an integer value.
If n is 0 , then X is an empty matrix.
If n is negative, then it is treated as 0 .
Data Types: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
sz1. szN — Size of each dimension (as separate arguments)
two or more integer values
Size of each dimension, specified as separate arguments of integer values.
If the size of any dimension is 0 , then X is an empty array.
If the size of any dimension is negative, then it is treated as 0 .
Beyond the second dimension, randi ignores trailing dimensions with a size of 1. For example, randi([5,10],3,1,1,1) produces a 3-by-1 vector of random integers between 5 and 10.
Data Types: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
sz — Size of each dimension (as a row vector)
integer values
Size of each dimension, specified as a row vector of integer values. Each element of this vector indicates the size of the corresponding dimension:
If the size of any dimension is 0 , then X is an empty array.
If the size of any dimension is negative, then it is treated as 0 .
Beyond the second dimension, randi ignores trailing dimensions with a size of 1. For example, randi([5,10],[3 1 1 1]) produces a 3-by-1 vector of random integers between 5 and 10.
Data Types: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
typename — Data type (class) to create
‘double’ (default) | ‘single’ | ‘int8’ | ‘uint8’ | .
Output class, specified as ‘double’ , ‘single’ , ‘int8’ , ‘uint8’ , ‘int16’ , ‘uint16’ , ‘int32’ , ‘uint32’ , or the name of another class that provides randi support.
Example: randi(5,5,’int8′)
Data Types: char
p — Prototype of array to create
numeric array
Prototype of array to create, specified as a numeric array.
Example: randi(5,5,’like’,p)
Data Types: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32
s — Random number stream
RandStream object
Random number stream, specified as a RandStream object.
Example: s = RandStream(‘dsfmt19937’); randi(s,[5,10],[3 1])
The sequence of numbers produced by randi is determined by the internal settings of the uniform pseudorandom number generator that underlies rand , randi , and randn . You can control that shared random number generator using rng .
The arrays returned by randi might contain repeated integer values. This behavior is sometimes referred to as sampling with replacement. Use randperm if you require all unique values.
Extended Capabilities
C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.
Usage notes and limitations:
The data type (class) must be a built-in MATLAB ® numeric type. Does not invoke the static randi method for other classes. For example, randi(imax,sz,’myclass’) does not invoke myclass.randi(imax,sz) .
Size arguments must have a fixed size.
If extrinsic calls are enabled and randi is not called from inside a parfor loop, generated MEX files use the same random number state as MATLAB in serial code. Otherwise, the generated MEX code and standalone code maintain their own random number state that is initialized to the same state as MATLAB.
Thread-Based Environment
Run code in the background using MATLAB® backgroundPool or accelerate code with Parallel Computing Toolbox™ ThreadPool .
This function fully supports thread-based environments. For more information, see Run MATLAB Functions in Thread-Based Environment.
GPU Arrays
Accelerate code by running on a graphics processing unit (GPU) using Parallel Computing Toolbox™.
Usage notes and limitations:
The stream syntax randi( s ,___) is not supported on a GPU.
You can specify typename as ‘gpuArray’ . If you specify typename as ‘gpuArray’ , the default underlying type of the array is double .
To create a GPU array with underlying type datatype , specify the underlying type as an additional argument before typename . For example, X = randi(imax,3,datatype,’gpuArray’) creates a 3-by-3 GPU array of random integers in the range [1 imax] with underlying type datatype .
You can specify the underlying type datatype as one of these options:
You can also specify the numeric variable p as a gpuArray .
If you specify p as a gpuArray , the underlying type of the returned array is the same as p .
For more information, see Run MATLAB Functions on a GPU (Parallel Computing Toolbox) .
Distributed Arrays
Partition large arrays across the combined memory of your cluster using Parallel Computing Toolbox™.
Usage notes and limitations:
The stream syntax randi( s ,___) is not supported for codistributed or distributed arrays.
You can specify typename as ‘codistributed’ or ‘distributed’ . If you specify typename as ‘codistributed’ or ‘distributed’ , the default underlying type of the returned array is double .
To create a distributed or codistributed array with underlying type datatype , specify the underlying type as an additional argument before typename . For example, X = randi(imax,3,datatype,’distributed’) creates a 3-by-3 distributed matrix of random integers in the range [1 imax] with underlying type datatype .
You can specify the underlying type datatype as one of these options:
You can also specify p as a codistributed or distributed array.
If you specify p as a codistributed or distributed array, the underlying type of the returned array is the same as p .
For additional codistributed syntaxes, see randi (codistributed) (Parallel Computing Toolbox) .
For more information, see Run MATLAB Functions with Distributed Arrays (Parallel Computing Toolbox) .
See Also
Topics
Open Example
You have a modified version of this example. Do you want to open this example with your edits?
Источник