Uniformly distributed pseudorandom integers - MATLAB randi - MathWorks France (2024)

Table of Contents
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 Random Complex Integers Random Logical 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) integer values sz — Size of each dimension (as a row vector) integer values typename — Data type (class) to create "double" (default) | "single" | "int8" | "uint8" | "int16" | "uint16" | "int32" | "uint32" | "logical" p — Prototype of array to create numeric array | logical array s — Random number stream RandStream object Tips 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™. Version History R2023a: Create random logical array R2022a: Match complexity with "like", and use "like" with RandStream object R2014a: Match data type of an existing variable with 'like' R2013b: Non-integer size inputs are not supported See Also Topics Commande MATLAB Americas Europe Asia Pacific

Uniformly distributed pseudorandom integers

collapse all in page

Syntax

X = randi(imax)

X = randi(imax,n)

X = randi(imax,sz1,...,szN)

X = randi(imax,sz)

X = randi(___,typename)

X = randi(___,"like",p)

X = randi([imin,imax],___)

X = randi(s,___)

Description

X = randi(imax) returns a pseudorandom scalar integer between 1 and imax.

example

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 indicate the size of each dimension. For example, randi(10,3,4) returns a 3-by-4 array of pseudorandom integers between 1 and 10.

example

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.

example

X = randi(___,typename) returns an array of pseudorandom integers between 1 and imax of data type typename. The typename input can be "single", "double", "int8", "uint8", "int16", "uint16", "int32", "uint32", or "logical". You can use any of the input arguments in the previous syntaxes.

example

X = randi(___,"like",p) returns an array of pseudorandom integers like p; that is, with the same data type and complexity (real or complex) as p. You can specify either typename or "like", but not both.

example

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. You can specify s followed by any of the input argument combinations in previous syntaxes.

Examples

collapse all

Square Matrix of Random Integers

Open Live Script

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).

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

Random Integers Within Specified Interval

Open Live Script

Generate a 10-by-1 column vector of uniformly distributed random integers from the sample interval [-5,5].

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

Control Random Number Generation

Open Live Script

Save the current state of the random number generator and create a 1-by-5 vector of random integers.

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

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.

r1 = 1×5 9 10 2 10 7

3-D Array of Random Integers

Open Live Script

Create a 3-by-2-by-3 array of uniformly distributed random integers between 1 and 500.

X = randi(500,[3,2,3])
X = X(:,:,1) = 408 457 453 317 64 49X(:,:,2) = 140 483 274 79 479 486X(:,:,3) = 479 71 243 211 401 458

Random Integers of Other Data Types

Open Live Script

Create a 1-by-4 vector of random numbers between 1 and 100 whose elements are of type int16.

r = randi(100,1,4,"int16")
r = 1x4 int16 row vector 82 91 13 92
class(r)
ans = 'int16'

Size Defined by Existing Array

Open Live Script

Create a matrix of uniformly distributed random integers between 1 and 10 with the same size as an existing array.

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

It is a common pattern to combine the previous two lines of code into a single line:

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

Size and Numeric Data Type Defined by Existing Array

Open Live Script

Create a 2-by-2 matrix of 8-bit signed integers.

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

Create an array of random integers that is the same size and data type as p.

X = randi(10,size(p),"like",p)
X = 2x2 int8 matrix 9 2 10 10
class(X)
ans = 'int8'

Random Complex Integers

Since R2022a

Open Live Script

Generate 10 random complex integers from the discrete uniform distribution over a square domain with real and imaginary parts in the interval [-5,5].

a = randi([-5,5],10,1,"like",1i)
a = 10×1 complex 3.0000 + 4.0000i -4.0000 + 5.0000i 1.0000 - 4.0000i -2.0000 + 1.0000i 5.0000 + 5.0000i -4.0000 + 5.0000i 5.0000 + 0.0000i 3.0000 - 4.0000i -1.0000 + 5.0000i 3.0000 + 5.0000i

Random Logical Array

Since R2023a

Open Live Script

Create a 5-by-5 matrix of random logical values (0s and 1s) with a discrete uniform distribution.

r = randi([0 1],5,"logical")
r = 5x5 logical array 1 0 0 0 1 1 0 1 0 0 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1

Input Arguments

collapse all

imaxLargest integer in sample interval
positive integer

Largest integer in sample interval, specified as a positiveinteger. randi draws values from the uniform distributionin the sample interval [1,imax].

Example: randi(10,5)

iminSmallest integer in sample interval
1 (default) | scalar integer

Smallest integer in sample interval, specified as a scalar integer.

Both imin and imax mustbe integers that satisfy iminimax.

For example, randi([50,100],5) returns a5-by-5 matrix of random integers between (and including) 50 and 100.

nSize of square matrix
integer value

Size of square matrix, specified as an integer value.

  • If n is 0, then X isan empty matrix.

  • If n is negative, then it is treatedas 0.

Data Types: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

sz1,...,szNSize of each dimension (as separate arguments)
integer values

Size of each dimension, specified as separate arguments of integervalues.

  • If the size of any dimension is 0,then X is an empty array.

  • If the size of any dimension is negative, then itis treated as 0.

  • Beyond the second dimension, randi ignorestrailing dimensions with a size of 1. For example, randi([5,10],3,1,1,1) producesa 3-by-1 vector of random integers between 5 and 10.

Data Types: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

szSize of each dimension (as a row vector)
integer values

Size of each dimension, specified as a row vector of integervalues. Each element of this vector indicates the size of the correspondingdimension:

  • If the size of any dimension is 0,then X is an empty array.

  • If the size of any dimension is negative, then itis 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

typenameData type (class) to create
"double" (default) | "single" | "int8" | "uint8" | "int16" | "uint16" | "int32" | "uint32" | "logical"

Data type (class) to create, specified as "double", "single", "int8", "uint8", "int16", "uint16", "int32", "uint32", "logical", or the name of another class that provides randi support.

Example: randi(5,5,"int8")

pPrototype of array to create
numeric array | logical array

Prototype of array to create, specified as a numeric or logical array.

Example: randi(5,5,"like",p)

Data Types: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | logical
Complex Number Support: Yes

sRandom number stream
RandStream object

Random number stream, specified as a RandStream object.

Example: s = RandStream("dsfmt19937"); randi(s,[5,10],[3 1])

Tips

  • The sequence of numbers produced by randi isdetermined by the internal settings of the uniform pseudorandom numbergenerator that underlies rand, randi,and randn. You can control that shared random numbergenerator using rng.

  • The arrays returned by randi can contain repeated integer values. This behavior is sometimes referred to as sampling with replacement. Use randperm if you require all unique values.

  • If imin and imax are outside the range of the output type (as specified by typename or by the prototype p), then randi first creates random integers within the interval [imin,imax] and converts any resulting out-of-range integers to the minimum or maximum value of the output type. For example:

    rng default;r = randi([-10 10],1,10)
    r = 7 9 -8 9 3 -8 -5 1 10 10
    rng default;r = randi([-10 10],1,10,"logical")
    r = 1×10 logical array 1 1 0 1 1 0 0 1 1 1

Extended Capabilities

Version History

Introduced in R2008b

expand all

You can create a random logical array by specifying typename as "logical" or the prototype p as a logical array. For example, see Random Logical Array.

Specifying a dimension that is not an integer causes an error. Use floor to convert non-integer size inputs to integers.

See Also

rand | randn | rng | RandStream | randperm

Topics

  • Random Integers
  • Create Arrays of Random Numbers
  • Generate Random Numbers That Are Repeatable
  • Generate Random Numbers That Are Different
  • Creating and Controlling a Random Number Stream
  • Class Support for Array-Creation Functions
  • Why Do Random Numbers Repeat After Startup?

Commande MATLAB

Vous avez cliqué sur un lien qui correspond à cette commande MATLAB:

 

Pour exécuter la commande, saisissez-la dans la fenêtre de commande de MATLAB. Les navigateurs web ne supportent pas les commandes MATLAB.

Uniformly distributed pseudorandom integers - MATLAB randi- MathWorks France (1)

Select a Web Site

Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .

You can also select a web site from the following list:

Americas

  • América Latina (Español)
  • Canada (English)
  • United States (English)

Europe

  • Belgium (English)
  • Denmark (English)
  • Deutschland (Deutsch)
  • España (Español)
  • Finland (English)
  • France (Français)
  • Ireland (English)
  • Italia (Italiano)
  • Luxembourg (English)
  • Netherlands (English)
  • Norway (English)
  • Österreich (Deutsch)
  • Portugal (English)
  • Sweden (English)
  • Switzerland
    • Deutsch
    • English
    • Français
  • United Kingdom (English)

Asia Pacific

Contact your local office

Uniformly distributed pseudorandom integers - MATLAB randi
- MathWorks France (2024)
Top Articles
Latest Posts
Article information

Author: Corie Satterfield

Last Updated:

Views: 6283

Rating: 4.1 / 5 (42 voted)

Reviews: 81% of readers found this page helpful

Author information

Name: Corie Satterfield

Birthday: 1992-08-19

Address: 850 Benjamin Bridge, Dickinsonchester, CO 68572-0542

Phone: +26813599986666

Job: Sales Manager

Hobby: Table tennis, Soapmaking, Flower arranging, amateur radio, Rock climbing, scrapbook, Horseback riding

Introduction: My name is Corie Satterfield, I am a fancy, perfect, spotless, quaint, fantastic, funny, lucky person who loves writing and wants to share my knowledge and understanding with you.