# rand

Create codistributed array of uniformly distributed random numbers

## Syntax

``X = rand(n)``
``X = rand(sz1,...,szN)``
``X = rand(sz)``
``X = rand(___,datatype)``
``X = rand(___,codist)``
``X = rand(___,codist,"noCommunication")``
``X = rand(___,"like",p)``

## Description

example

````X = rand(n)` creates an `n`-by-`n` codistributed matrix of uniformly distributed random numbers. Each element in `X` is between 0 and 1.When you create the codistributed array in a communicating job or `spmd` block, the function creates an array on each worker. If you create a codistributed array outside of a communicating job or `spmd` block, the array is stored only on the worker or client that creates the codistributed array.By default, the codistributed array has the underlying type `double`. ```
````X = rand(sz1,...,szN)` creates an `sz1`-by-...-by-`szN` codistributed array of uniformly distributed random numbers where `sz1,...,szN` indicates the size of each dimension.```
````X = rand(sz)` creates a codistributed array of uniformly distributed random numbers where the size vector `sz` defines the size of `X`. For example, `rand(codistributed([2 3]))` creates a 2-by-3 codistributed array.```
````X = rand(___,datatype)` creates a codistributed array of uniformly distributed random numbers with the underlying type `datatype`. For example, `rand(codistributed(1),"single")` creates a codistributed single-precision random number. You can use this syntax with any of the input arguments in the previous syntaxes.```
````X = rand(___,codist)` uses the codistributor object `codist` to create a codistributed array of uniformly distributed random numbers.Specify the distribution of the array values across the memory of workers using the codistributor object `codist`. For more information about creating codistributors, see `codistributor1d` and `codistributor2dbc`.```
````X = rand(___,codist,"noCommunication")` creates a codistributed array of uniformly distributed random numbers without using communication between workers. You can specify `codist` or `codist,"noCommunication"`, but not both. When you create very large arrays or your communicating job or `spmd` block uses many workers, worker-worker communication can slow down array creation. Use this syntax to improve the performance of your code by removing the time required for worker-worker communication. TipWhen you use this syntax, some error checking steps are skipped. Use this syntax to improve the performance of your code after you prototype your code without specifying `"noCommunication"`. ```
````X = rand(___,"like",p)` uses the array `p` to create a codistributed array of uniformly distributed random numbers. You can specify `datatype` or `"like"`, but not both.The returned array `X` has the same underlying type, sparsity, and complexity (real or complex) as `p`.```

## Examples

collapse all

Create a 1000-by-1000 codistributed double matrix of `rand`s, distributed by its second dimension (columns).

```spmd(4) C = rand(1000,'codistributed'); end```

With four workers, each worker contains a 1000-by-250 local piece of `C`.

Create a 1000-by-1000 codistributed `single` matrix of `rand`s, distributed by its columns.

```spmd(4) codist = codistributor('1d',2,100*[1:numlabs]); C = rand(1000,1000,'single',codist); end```

Each worker contains a 100-by-`labindex` local piece of `C`.

## Input Arguments

collapse all

Size of the square matrix, specified as a `codistributed` integer.

• If `n` is `0`, then `X` is an empty matrix.

• If `n` is negative, then the function treats it as `0`.

Size of each dimension, specified as separate arguments of `codistributed` 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 the function treats it as `0`.

• Beyond the second dimension, the function ignores trailing dimensions with a size of `1`.

Size of each dimension, specified as a `codistributed` integer row vector. 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 the function treats it as `0`.

• Beyond the second dimension, `rand` ignores trailing dimensions with a size of `1`. For example, `rand(codistributed([3 1 1 1]))` produces a 3-by-1 codistributed vector of uniformly distributed random numbers.

Example: `sz = codistributed([2 3 4])` creates a 2-by-3-by-4 codistributed array.

Underlying data type of the returned array, specified as one of these options:

• `"double"`

• `"single"`

• `"logical"`

• `"int8"`

• `"uint8"`

• `"int16"`

• `"uint16"`

• `"int32"`

• `"uint32"`

• `"int64"`

• `"uint64"`

Codistributor, specified as a `codistributor1d` or `codistributor2dbc` object. For information on creating codistributors, see the reference pages for `codistributor1d` and `codistributor2dbc`. To use the default distribution scheme, you can specify a codistributor constructor without arguments.

Prototype of array to create, specified as a `codistributed` array.

### Topics

Introduced in R2006b

## Support #### Try MATLAB, Simulink, and Other Products

Get trial now