rand: Create Random Matrices

View source: R/rand.R

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

pracma documentation built on Nov. 10, 2023, 1:14 a.m.