Univariate Random Sampling#
#include <raft/random/rng.cuh>
namespace raft::random
-
template<typename OutputValueType, typename IndexType>
void uniform(raft::resources const &handle, RngState &rng_state, raft::device_vector_view<OutputValueType, IndexType> out, OutputValueType start, OutputValueType end)# Generate uniformly distributed numbers in the given range.
- Template Parameters:
OutputValueType – Data type of output random number
Index – Data type used to represent length of the arrays
- Parameters:
handle – [in] raft handle for resource management
rng_state – [in] random number generator state
out – [out] the output array
start – [in] start of the range
end – [in] end of the range
-
template<typename OutputValueType, typename IndexType>
void uniformInt(raft::resources const &handle, RngState &rng_state, raft::device_vector_view<OutputValueType, IndexType> out, OutputValueType start, OutputValueType end)# Generate uniformly distributed integers in the given range.
- Template Parameters:
OutputValueType – Integral type; value type of the output vector
IndexType – Type used to represent length of the output vector
- Parameters:
handle – [in] raft handle for resource management
rng_state – [in] random number generator state
out – [out] the output vector of random numbers
start – [in] start of the range
end – [in] end of the range
-
template<typename OutputValueType, typename IndexType>
void normal(raft::resources const &handle, RngState &rng_state, raft::device_vector_view<OutputValueType, IndexType> out, OutputValueType mu, OutputValueType sigma)# Generate normal distributed numbers with a given mean and standard deviation.
- Template Parameters:
OutputValueType – data type of output random number
IndexType – data type used to represent length of the arrays
- Parameters:
handle – [in] raft handle for resource management
rng_state – [in] random number generator state
out – [out] the output array
mu – [in] mean of the distribution
sigma – [in] std-dev of the distribution
-
template<typename OutputValueType, typename IndexType>
void normalInt(raft::resources const &handle, RngState &rng_state, raft::device_vector_view<OutputValueType, IndexType> out, OutputValueType mu, OutputValueType sigma)# Generate normal distributed integers.
- Template Parameters:
OutputValueType – Integral type; value type of the output vector
IndexType – Integral type of the output vector’s length
- Parameters:
handle – [in] raft handle for resource management
rng_state – [in] random number generator state
out – [out] the output array
mu – [in] mean of the distribution
sigma – [in] standard deviation of the distribution
-
template<typename OutputValueType, typename IndexType>
void normalTable(raft::resources const &handle, RngState &rng_state, raft::device_vector_view<const OutputValueType, IndexType> mu_vec, std::variant<raft::device_vector_view<const OutputValueType, IndexType>, OutputValueType> sigma, raft::device_matrix_view<OutputValueType, IndexType, raft::row_major> out)# Generate normal distributed table according to the given set of means and scalar standard deviations.
Each row in this table conforms to a normally distributed n-dim vector whose mean is the input vector and standard deviation is the corresponding vector or scalar. Correlations among the dimensions itself are assumed to be absent.
- Template Parameters:
OutputValueType – data type of output random number
IndexType – data type used to represent length of the arrays
- Parameters:
handle – [in] raft handle for resource management
rng_state – [in] random number generator state
mu_vec – [in] mean vector (of length
out.extent(1)
)sigma – [in] Either the standard-deviation vector (of length
out.extent(1)
) of each component, or a scalar standard deviation for all components.out – [out] the output table
-
template<typename OutputValueType, typename IndexType>
void fill(raft::resources const &handle, RngState &rng_state, OutputValueType val, raft::device_vector_view<OutputValueType, IndexType> out)# Fill a vector with the given value.
- Template Parameters:
OutputValueType – Value type of the output vector
IndexType – Integral type used to represent length of the output vector
- Parameters:
handle – [in] raft handle for resource management
rng_state – [in] random number generator state
val – [in] value with which to fill the output vector
out – [out] the output vector
-
template<typename OutputValueType, typename IndexType, typename Type>
void bernoulli(raft::resources const &handle, RngState &rng_state, raft::device_vector_view<OutputValueType, IndexType> out, Type prob)# Generate bernoulli distributed boolean array.
- Template Parameters:
OutputValueType – Type of each element of the output vector; must be able to represent boolean values (e.g.,
bool
)IndexType – Integral type of the output vector’s length
Type – Data type in which to compute the probabilities
- Parameters:
handle – [in] raft handle for resource management
rng_state – [in] random number generator state
out – [out] the output vector
prob – [in] coin-toss probability for heads
-
template<typename OutputValueType, typename IndexType>
void scaled_bernoulli(raft::resources const &handle, RngState &rng_state, raft::device_vector_view<OutputValueType, IndexType> out, OutputValueType prob, OutputValueType scale)# Generate bernoulli distributed array and applies scale.
- Template Parameters:
OutputValueType – Data type in which to compute the probabilities
IndexType – Integral type of the output vector’s length
- Parameters:
handle – [in] raft handle for resource management
rng_state – [in] random number generator state
out – [out] the output vector
prob – [in] coin-toss probability for heads
scale – [in] scaling factor
-
template<typename OutputValueType, typename IndexType = int>
void gumbel(raft::resources const &handle, RngState &rng_state, raft::device_vector_view<OutputValueType, IndexType> out, OutputValueType mu, OutputValueType beta)# Generate Gumbel distributed random numbers.
- Template Parameters:
OutputValueType – data type of output random number
IndexType – data type used to represent length of the arrays
- Parameters:
handle – [in] raft handle for resource management
rng_state – [in] random number generator state
out – [out] output array
mu – [in] mean value
beta – [in] scale value
-
template<typename OutputValueType, typename IndexType>
void lognormal(raft::resources const &handle, RngState &rng_state, raft::device_vector_view<OutputValueType, IndexType> out, OutputValueType mu, OutputValueType sigma)# Generate lognormal distributed numbers.
- Template Parameters:
OutputValueType – data type of output random number
IndexType – data type used to represent length of the arrays
- Parameters:
handle – [in] raft handle for resource management
rng_state – [in] random number generator state
out – [out] the output array
mu – [in] mean of the distribution
sigma – [in] standard deviation of the distribution
-
template<typename OutputValueType, typename IndexType = int>
void logistic(raft::resources const &handle, RngState &rng_state, raft::device_vector_view<OutputValueType, IndexType> out, OutputValueType mu, OutputValueType scale)# Generate logistic distributed random numbers.
- Template Parameters:
OutputValueType – data type of output random number
IndexType – data type used to represent length of the arrays
- Parameters:
handle – [in] raft handle for resource management
rng_state – [in] random number generator state
out – [out] output array
mu – [in] mean value
scale – [in] scale value
-
template<typename OutputValueType, typename IndexType>
void exponential(raft::resources const &handle, RngState &rng_state, raft::device_vector_view<OutputValueType, IndexType> out, OutputValueType lambda)# Generate exponentially distributed random numbers.
- Template Parameters:
OutputValueType – data type of output random number
IndexType – data type used to represent length of the arrays
- Parameters:
handle – [in] raft handle for resource management
rng_state – [in] random number generator state
out – [out] output array
lambda – [in] the exponential distribution’s lambda parameter
-
template<typename OutputValueType, typename IndexType>
void rayleigh(raft::resources const &handle, RngState &rng_state, raft::device_vector_view<OutputValueType, IndexType> out, OutputValueType sigma)# Generate rayleigh distributed random numbers.
- Template Parameters:
OutputValueType – data type of output random number
IndexType – data type used to represent length of the arrays
- Parameters:
handle – [in] raft handle for resource management
rng_state – [in] random number generator state
out – [out] output array
sigma – [in] the distribution’s sigma parameter
-
template<typename OutputValueType, typename IndexType>
void laplace(raft::resources const &handle, RngState &rng_state, raft::device_vector_view<OutputValueType, IndexType> out, OutputValueType mu, OutputValueType scale)# Generate laplace distributed random numbers.
- Template Parameters:
OutputValueType – data type of output random number
IndexType – data type used to represent length of the arrays
- Parameters:
handle – [in] raft handle for resource management
rng_state – [in] random number generator state
out – [out] output array
mu – [in] the mean
scale – [in] the scale
-
template<typename OutType, typename WeightType, typename IndexType>
std::enable_if_t<std::is_integral_v<OutType>> discrete(raft::resources const &handle, RngState &rng_state, raft::device_vector_view<OutType, IndexType> out, raft::device_vector_view<const WeightType, IndexType> weights)# Generate random integers, where the probability of i is weights[i]/sum(weights)
Usage example:
#include <raft/core/device_mdarray.hpp> #include <raft/core/resources.hpp> #include <raft/random/rng.cuh> raft::resources handle; ... raft::random::RngState rng(seed); auto indices = raft::make_device_vector<int>(handle, n_samples); raft::random::discrete(handle, rng, indices.view(), weights);
- Template Parameters:
OutType – integer output type
WeightType – weight type
IndexType – data type used to represent length of the arrays
- Parameters:
handle – [in] raft handle for resource management
rng_state – [in] random number generator state
out – [out] output array
weights – [in] weight array