cpp-toolbox  0.0.1
A toolbox library for C++
Loading...
Searching...
No Matches
toolbox::utils::random_t Class Reference

随机数工具类/Random number utility class More...

#include <random.hpp>

Public Member Functions

 random_t ()
 构造函数,使用随机设备初始化种子/Constructor, seeds with a random_device by default
 
 random_t (unsigned int seed_val)
 使用指定种子初始化/Constructor, seeds with a specific value
 
void seed ()
 重新使用随机设备设置种子/Reseed with random_device
 
void seed (unsigned int s)
 使用指定种子设置/Reseed with specific value
 
int randint (int a, int b)
 生成[a, b]范围内的随机整数/Generate random integer in [a, b]
 
template<typename T >
random_int (T a, T b)
 生成指定整数类型的随机数/Generate random integer of given type
 
template<typename T >
random_float (T a, T b)
 生成指定浮点类型的随机数/Generate random floating point number of given type
 
template<typename T >
random (T a, T b)
 通用随机数生成函数/General random number generator
 
template<typename T >
random ()
 无参数版本的随机数生成函数/Random number generator without parameters
 
template<typename T >
uniform (T a, T b)
 生成[a, b]范围内的均匀分布浮点数/Generate uniform random float in [a, b]
 
template<typename T >
gauss (T mu, T sigma)
 生成高斯分布(正态分布)随机数/Generate Gaussian (normal) distributed random number
 
template<typename T >
choice (const std::vector< T > &vec)
 从vector中随机选择一个元素/Randomly choose one element from vector
 
template<typename TContainer >
TContainer::value_type choice_general (const TContainer &container)
 通用容器的随机选择/General random choice for containers supporting iterators and size()
 
template<typename TContainer >
void shuffle (TContainer &container)
 随机打乱容器/Shuffle the container randomly
 
template<typename TContainer >
TContainer sample (const TContainer &population, size_t k)
 从容器中随机采样k个元素/Randomly sample k elements from container
 
template<typename TContainer >
TContainer generate (std::size_t n, typename TContainer::value_type min, typename TContainer::value_type max)
 生成n个随机数/Generate n random numbers
 

Static Public Member Functions

static random_tinstance ()
 获取单例实例/Get singleton instance
 

Detailed Description

随机数工具类/Random number utility class

提供各种随机数生成、采样、洗牌等功能/Provides various random number generation, sampling, shuffling, etc.

int r = rng.randint(1, 10); // 生成1到10的随机整数/Generate random int in
[1,10] double f = rng.random<float>(0.0, 1.0); //
生成0到1的随机浮点数/Generate random float in [0,1] std::vector<int> v =
{1,2,3,4,5}; rng.shuffle(v); // 打乱向量/Shuffle vector int c =
rng.choice(v); // 随机选一个元素/Randomly choose one element
随机数工具类/Random number utility class
Definition random.hpp:32
int randint(int a, int b)
生成[a, b]范围内的随机整数/Generate random integer in [a, b]
Definition random.hpp:103
T choice(const std::vector< T > &vec)
从vector中随机选择一个元素/Randomly choose one element from vector
Definition random.hpp:260
T random()
无参数版本的随机数生成函数/Random number generator without parameters
Definition random.hpp:194
void shuffle(TContainer &container)
随机打乱容器/Shuffle the container randomly
Definition random.hpp:309
T random(T a, T b)
通用随机数生成函数/General random number generator
Definition random.hpp:168

Constructor & Destructor Documentation

◆ random_t() [1/2]

toolbox::utils::random_t::random_t ( )
inline

构造函数,使用随机设备初始化种子/Constructor, seeds with a random_device by default

◆ random_t() [2/2]

toolbox::utils::random_t::random_t ( unsigned int  seed_val)
inlineexplicit

使用指定种子初始化/Constructor, seeds with a specific value

Parameters
seed_val种子值/Seed value

Member Function Documentation

◆ choice()

template<typename T >
T toolbox::utils::random_t::choice ( const std::vector< T > &  vec)
inline

从vector中随机选择一个元素/Randomly choose one element from vector

Template Parameters
T元素类型/Element type
Parameters
vec输入vector/Input vector
Returns
T 随机元素/Random element
Exceptions
std::out_of_range如果vector为空/If vector is empty
std::vector<int> v = {1,2,3};
int c = rng.choice(v);

◆ choice_general()

template<typename TContainer >
TContainer::value_type toolbox::utils::random_t::choice_general ( const TContainer &  container)
inline

通用容器的随机选择/General random choice for containers supporting iterators and size()

Template Parameters
TContainer容器类型/Container type
Parameters
container输入容器/Input container
Returns
typename TContainer::value_type 随机元素/Random element
Exceptions
std::out_of_range如果容器为空/If container is empty
std::list<int> l = {1,2,3};
int c = rng.choice_general(l);

◆ gauss()

template<typename T >
T toolbox::utils::random_t::gauss ( mu,
sigma 
)
inline

生成高斯分布(正态分布)随机数/Generate Gaussian (normal) distributed random number

Template Parameters
T浮点类型/Floating point type
Parameters
mu均值/Mean
sigma标准差/Standard deviation
Returns
T 随机数/Random value
float g = rng.gauss<float>(0.0f, 1.0f);

◆ generate()

template<typename TContainer >
TContainer toolbox::utils::random_t::generate ( std::size_t  n,
typename TContainer::value_type  min,
typename TContainer::value_type  max 
)
inline

生成n个随机数/Generate n random numbers

Template Parameters
TContainer容器类型/Container type
Parameters
n生成数量/Number of random numbers
min下界/Lower bound
max上界/Upper bound
Returns
TContainer 随机数容器/Container of random numbers
auto r = rng.generate<std::vector<int>>(10, 1, 100);
auto f = rng.generate<std::vector<float>>(10, 0.0f, 1.0f);
auto d = rng.generate<std::list<double>>(10, 0.0, 1.0);
auto i = rng.generate<std::deque<int>>(10, 1, 100);

◆ instance()

static random_t & toolbox::utils::random_t::instance ( )
inlinestatic

获取单例实例/Get singleton instance

Returns
random_t& 单例引用/Reference to singleton
static random_t & instance()
获取单例实例/Get singleton instance
Definition random.hpp:67

◆ randint()

int toolbox::utils::random_t::randint ( int  a,
int  b 
)
inline

生成[a, b]范围内的随机整数/Generate random integer in [a, b]

Parameters
a下界/Lower bound
b上界/Upper bound
Returns
int 随机整数/Random integer
int r = rng.randint(1, 100);

◆ random() [1/2]

template<typename T >
T toolbox::utils::random_t::random ( )
inline

无参数版本的随机数生成函数/Random number generator without parameters

Template Parameters
T类型/Type (整数或浮点/integral or floating point)
Returns
T 随机数/Random value
int r = rng.random<int>();
float f = rng.random<float>();

◆ random() [2/2]

template<typename T >
T toolbox::utils::random_t::random ( a,
b 
)
inline

通用随机数生成函数/General random number generator

Template Parameters
T类型/Type (整数或浮点/integral or floating point)
Parameters
a下界/Lower bound
b上界/Upper bound
Returns
T 随机数/Random value
auto r = rng.random<int>(1, 10);
auto f = rng.random<float>(0.0f, 1.0f);

◆ random_float()

template<typename T >
T toolbox::utils::random_t::random_float ( a,
b 
)
inline

生成指定浮点类型的随机数/Generate random floating point number of given type

Template Parameters
T浮点类型/Floating point type
Parameters
a下界/Lower bound
b上界/Upper bound
Returns
T 随机浮点数/Random float
double f = rng.random_float<double>(0.0, 1.0);

◆ random_int()

template<typename T >
T toolbox::utils::random_t::random_int ( a,
b 
)
inline

生成指定整数类型的随机数/Generate random integer of given type

Template Parameters
T整数类型/Integral type
Parameters
a下界/Lower bound
b上界/Upper bound
Returns
T 随机整数/Random integer
auto r = rng.random_int<int16_t>(-10, 10);

◆ sample()

template<typename TContainer >
TContainer toolbox::utils::random_t::sample ( const TContainer &  population,
size_t  k 
)
inline

从容器中随机采样k个元素/Randomly sample k elements from container

Template Parameters
TContainer容器类型/Container type
Parameters
population输入容器/Input container
k采样数量/Number of samples
Returns
TContainer 采样结果/Sampled container
Exceptions
std::out_of_range如果k大于容器大小/If k > population size
std::vector<int> v = {1,2,3,4,5};
auto s = rng.sample(v, 3);

◆ seed() [1/2]

void toolbox::utils::random_t::seed ( )
inline

重新使用随机设备设置种子/Reseed with random_device

rng.seed();

◆ seed() [2/2]

void toolbox::utils::random_t::seed ( unsigned int  s)
inline

使用指定种子设置/Reseed with specific value

Parameters
s种子值/Seed value
rng.seed(42);

◆ shuffle()

template<typename TContainer >
void toolbox::utils::random_t::shuffle ( TContainer &  container)
inline

随机打乱容器/Shuffle the container randomly

Template Parameters
TContainer容器类型/Container type
Parameters
container输入容器/Input container
std::vector<int> v = {1,2,3};
rng.shuffle(v);

◆ uniform()

template<typename T >
T toolbox::utils::random_t::uniform ( a,
b 
)
inline

生成[a, b]范围内的均匀分布浮点数/Generate uniform random float in [a, b]

Template Parameters
T浮点类型/Floating point type
Parameters
a下界/Lower bound
b上界/Upper bound
Returns
T 随机浮点数/Random float
double f = rng.uniform<double>(0.0, 10.0);

The documentation for this class was generated from the following file: