R: Create Random Matrices

rand {pracma} | R Documentation

## Create Random Matrices

### Description

Create random matrices or random points in a unit circle (Matlab style).

### Usage

    rand(n = 1, m = n)
    randn(n = 1, m = n)
    randi(imax, n = 1, m = n)
    randsample(n, k, w = NULL, replacement = FALSE)

    rands(n = 1, N = 1, r = 1)
    randp(n = 1, r = 1)

### Arguments

`n, m` | integers specifying the size of the matrix
`imax` | integer or pair of integers
`k` | number of elements to return.
`w` | weight vector, used for discrete probabilities.
`replacement` | logical; sampling with or without replacement.
`N` | dimension of a shere, N=1 for the unit circle
`r` | radius of circle, default 1.

### Details

`rand()`, `randn()`, `randi()` create random matrices of size `n x m`, where the default is square matrices if `m` is missing.

`rand()` uses the uniform distribution on `]0, 1[`, while `randn()` uses the normal distribution with mean 0 and standard deviation 1.

`randi()` generates integers between `imax[1]` and `imax[2]` resp. 1 and `imax`, if `imax` is a scalar.

`randsample()` samples `k` elements from `1:n`, with or without replacement, or returns a weighted sample (with replacement), using the weight vector `w` for probabilities.

`rands()` generates uniformly random points on an `N`-sphere in the `N+1`-dimensional space. To generate uniformly random points in the `N`-dim. unit cube, take points in `S^{N-1}` und multiply with `unif(n)^(1/(N-1))`.

`randp()` generates uniformly random points in the unit circle (or in a circle of radius r).

### Value

Matrices of size `nxm` resp. a vector of length `n`.

`randp()` returns a pair of values representing a point in the circle, or a matrix of size `(n,2)`. `rands()` returns a matrix of size `(n, N+1)` with all rows being vectors of length `1`.

### Note

The Matlab style of setting a seed is not available; use R style `set.seed(...)`.

### References

Knuth, D. (1981). The Art of Computer programming; Vol. 2: Seminumerical Algorithms; Chapt. 3: Random Numbers. Addison-Wesley, Reading.

### See Also

`set.seed`

### Examples

    rand(3)
    randn(1, 5)
    randi(c(1,6), 1, 10)
    randsample(10, 5, replacement = TRUE, w = c(0,0,0, 1, 1, 1, 1, 0,0,0))

    P <- rands(1000, N = 1, r = 2)
    U <- randp(1000, 2)
    ## Not run:
    plot(U[, 1], U[, 2], pch = "+", asp = 1)
    points(P, pch = ".")
    ## End(Not run)

    #-- v is 2 independent normally distributed elements
    # u <- randp(1); r <- t(u) %*% u
    # v <- sqrt(-2 * log(r)/r) * u

    n <- 5000; U <- randp(n)
    R <- apply(U*U, 1, sum)
    P <- sqrt(-2 * log(R)/R) * U  # rnorm(2*n)
    ## Not run:
    hist(c(P))
    ## End(Not run)

[Package pracma version 2.0.4 Index]