Type: Package
Title: Random Number Generators and Utilities
Description: Provides a collection of random number generators for common and custom distributions, along with utility functions for sampling and simulation.
Version: 0.0.1
Date: 2026-03-09
Maintainer: Manos Papadakis <papadakm95@gmail.com>
License: GPL-3
Imports: Rcpp (≥ 0.12.3)
LinkingTo: Rcpp (≥ 0.12.3), RcppArmadillo, zigg
Depends: R (≥ 3.5.0)
SystemRequirements: C++17
NeedsCompilation: yes
Packaged: 2026-03-09 11:05:25 UTC; epapadakis
Author: Manos Papadakis [aut, cre, cph], Michail Tsagris [ctb], Omar Alzeley [ctb]
Repository: CRAN
Date/Publication: 2026-03-16 16:30:02 UTC

Random Number Generators and Utilities

Description

Provides a collection of random number generators for common and custom distributions, along with utility functions for sampling and simulation.

Details

Package: rangen
Type: Package
Version: 0.0.1
Date: 2026-03-09
License: GPL-3

Maintainers

Manos Papadakis <papadakm95@gmail.com>

Author(s)


Random integer values simulation

Description

Random integer values simulation.

Usage

Sample.int(n, size = n, replace = FALSE) 
Sample(x, size = length(x), replace = FALSE)
colSample(x, size = rep_len(nrow(x), ncol(x)), 
replace = rep_len(FALSE, ncol(x)), parallel = FALSE, cores = 0)
rowSample(x, size = rep_len(ncol(x), nrow(x)), 
replace = rep_len(FALSE, nrow(x)), parallel = FALSE, cores = 0)

Arguments

x

A numeric vector for sampling or a matrix for column-row sampling.

n

This must be an integer value. The function will then draw random integer values from 1:n.

size

The number of integer values to sample.

replace

Do you want to sample with replacement? If yes, set this equal to TRUE.

parallel

Do you want to do it in parallel, for column - row major, in C++? TRUE or FALSE.

cores

Number of cores to use for parallelism. Valid only when argument parallel is set to TRUE. Default value is 0 and it means the maximum supported cores.

Details

These functions provide flexible sampling utilities similar in purpose to R's base functions sample.int and sample. Each function operates on a different structure:

All functions support sampling with or without replacement. Parallel versions do not support seeding.

Value

Sample.int, Sample

A vector of sampled values.

colSample, rowSample

A matrix or data frame containing the sampled elements.

Author(s)

R implementation and documentation: Manos Papadakis <papadakm95@gmail.com>.

See Also

sample, sample.int

Examples

# Sample integers from 1 to 10 with replacement (faster than base::sample.int)
x <- Sample.int(10, 1000, replace = TRUE)

# Sample from the vector 'x' (faster than base::sample)
xs <- Sample(x)

# Create a matrix and perform column-wise sampling
# 'size' must have the same length as the number of columns
mat <- matrix(1:20, nrow = 5, ncol = 4)
colSample(mat, size = rep(5, ncol(mat)), replace = rep(TRUE, ncol(mat)))

# Create a matrix and perform row-wise sampling
# 'size' must have the same length as the number of rows
rowSample(mat, size = rep(4, nrow(mat)), replace = rep(FALSE, nrow(mat)))

Random values simulation from various distributions

Description

Functions to simulate random values from different probability distributions: uniform, beta, exponential, chi-squared, gamma, Cauchy, t-distribution, and geometric.

Usage

Runif(n, min = 0, max = 1) 
Rbeta(n, alpha, beta)
Rexp(n, rate = 1)
Rchisq(n, df)
Rgamma(n, shape, rate = 1)
Rcauchy(n, location = 0, scale = 1)
Rt(n, df, ncp)
Rgeom(n, prob)
Rpareto(n, shape = 1, scale = 1)
Rfrechet(n, lambda = 1, mu = 0, sigma = 1)
Rlaplace(n, mu = 0, sigma = 1)
Rgumble(n, mu = 0, sigma = 1)
Rarcsine(n, min = 0, max = 1)
Rnorm(n, mean = 0, sd = 1)
Runif.mat(nrow, ncol, min = 0, max = 1) 
Rbeta.mat(nrow, ncol, alpha, beta)
Rexp.mat(nrow, ncol, rate = 1)
Rchisq.mat(nrow, ncol, df)
Rgamma.mat(nrow, ncol, shape, rate = 1)
Rcauchy.mat(nrow, ncol, location = 0, scale = 1)
Rt.mat(nrow, ncol, df, ncp)
Rgeom.mat(nrow, ncol, prob)
Rpareto.mat(nrow, ncol, shape = 1, scale = 1)
Rfrechet.mat(nrow, ncol, lambda = 1, mu = 0, sigma = 1)
Rlaplace.mat(nrow, ncol, mu = 0, sigma = 1)
Rgumble.mat(nrow, ncol, mu = 0, sigma = 1)
Rarcsine.mat(nrow, ncol, min = 0, max = 1)
Rnorm.mat(nrow, ncol, mean = 0, sd = 1)
colRunif(nrow, ncol, min = rep_len(0, ncol), max = rep_len(1, ncol))
colRbeta(nrow, ncol, alpha, beta)
colRexp(nrow, ncol, rate = rep_len(1, ncol))
colRchisq(nrow, ncol, df)
colRgamma(nrow, ncol, shape, rate = rep_len(1, ncol))
colRgeom(nrow, ncol, prob)
colRcauchy(nrow, ncol, location = rep_len(0, ncol), scale = rep_len(1, ncol))
colRt(nrow, ncol, df, ncp)
colRpareto(nrow, ncol, shape = rep_len(1, ncol), scale = rep_len(1, ncol))
colRfrechet(nrow, ncol, lambda = rep_len(1, ncol), 
mu = rep_len(0, ncol), sigma = rep_len(1, ncol))
colRlaplace(nrow, ncol, mu = rep_len(0, ncol), sigma = rep_len(1, ncol))
colRgumble(nrow, ncol, mu = rep_len(0, ncol), sigma = rep_len(1, ncol))
colRarcsine(nrow, ncol, min = rep_len(0, ncol), max = rep_len(1, ncol))
colRnorm(nrow, ncol, mean = rep_len(0, ncol), sd = rep_len(1, ncol))
setSeed(seed = nanoTime())

Arguments

n

The number of values to generate.

nrow

The number of rows.

ncol

The number of columns.

min

The lower value.

max

The upper value.

alpha

The shape parameter alpha.

beta

The shape parameter beta.

rate

Rgamma: The rate parameter.

df

Rt: The degrees of freedom.

lambda, shape

The shape parameter.

location, mu

The location parameter.

scale, sigma

The scale parameter.

ncp

The non-centrality parameter.

prob

The probability of success on each trial.

seed

A single value, interpreted as an integer.

mean

Vector of means.

sd

Vector of standard deviations.

Details

Value

Each function, for example Runif, returns a vector with simulated values from the respective distribution. Each function.mat, for example Runif.mat, returns a matrix with simulated values from the respective distribution. Each colFunction, for example colRunif, returns a matrix with column major simulated values from the respective distribution.

Author(s)

R implementation and documentation: Manos Papadakis <papadakm95@gmail.com>.

See Also

runif, rbeta, rexp, rchisq, rgamma, rcauchy, rt, rgeom

Examples

# Scalar draws
x_unif     <- Runif(5, 0, 1)
x_beta     <- Rbeta(5, 2, 5)
x_exp      <- Rexp(5, 1.5)
x_chisq    <- Rchisq(5, 4)
x_gamma    <- Rgamma(5, 2, 2)
x_cauchy   <- Rcauchy(5, 0, 1)
x_t        <- Rt(5, df = 5, ncp = 2)
x_geom     <- Rgeom(5, 0.5)
x_pareto   <- Rpareto(5, shape = 2, scale = 1)
x_frechet  <- Rfrechet(5, lambda = 1, mu = 0, sigma = 1)
x_laplace  <- Rlaplace(5, mu = 0, sigma = 1)
x_gumblet  <- Rgumble(5, mu = 0, sigma = 1)
x_arcsine  <- Rarcsine(5, min = 0, max = 1)
x_norm     <- Rnorm(5)

#matrices
x_unif     <- Runif.mat(5,2, 0, 1)
x_beta     <- Rbeta.mat(5,2, 2, 5)
x_exp      <- Rexp.mat(5,2, 1.5)
x_chisq    <- Rchisq.mat(5,2, 4)
x_gamma    <- Rgamma.mat(5,2, 2, 2)
x_cauchy   <- Rcauchy.mat(5,2, 0, 1)
x_t        <- Rt.mat(5,2, df = 5, ncp = 2)
x_geom     <- Rgeom.mat(5,2, 0.5)
x_pareto   <- Rpareto.mat(5,2, shape = 2, scale = 1)
x_frechet  <- Rfrechet.mat(5,2, lambda = 1, mu = 0, sigma = 1)
x_laplace  <- Rlaplace.mat(5,2, mu = 0, sigma = 1)
x_gumblet  <- Rgumble.mat(5,2, mu = 0, sigma = 1)
x_arcsine  <- Rarcsine.mat(5,2, min = 0, max = 1)
x_norm     <- Rnorm.mat(5,2)

# Column-wise (vectorized by column) draws
x_col_unif    <- colRunif(5, 2, min = c(0, 1), max = c(1, 2))
x_col_beta    <- colRbeta(5, 2, alpha = c(2, 5), beta = c(5, 2))
x_col_exp     <- colRexp(5, 2, rate = c(1.5, 2.0))
x_col_chisq   <- colRchisq(5, 2, df = c(4, 5))
x_col_gamma   <- colRgamma(5, 2, shape = c(2, 3), rate = c(2, 1))
x_col_cauchy  <- colRcauchy(5, 2, location = c(0, 1), scale = c(1, 2))
x_col_t       <- colRt(5, 2, df = c(5, 6), ncp = c(2, 1))
x_col_geom    <- colRgeom(5, 2, prob = c(0.5, 0.3))
x_col_pareto  <- colRpareto(5, 2, shape = c(2, 3), scale = c(1, 1))
x_col_frechet <- colRfrechet(5, 2, lambda = c(1, 2), mu = c(0, 0), sigma = c(1, 1))
x_col_laplace <- colRlaplace(5, 2, mu = c(0, 1), sigma = c(1, 2))
x_col_gumble  <- colRgumble(5, 2, mu = c(0, 1), sigma = c(1, 2))
x_col_arcsine <- colRarcsine(5, 2, min = c(0, 0.5), max = c(1, 1.5))
x_col_norm    <- colRnorm(5, 2)


Time functions

Description

Functions to get the current time in different units.

Usage

nanoTime()

Details

Value

Each function returns a numeric value.

Author(s)

Manos Papadakis <papadakm95@gmail.com>.

See Also

runif, rbeta, rexp, rchisq, rgamma, rcauchy, rt, rgeom

Examples

x <- nanoTime()