tgen
Loading...
Searching...
No Matches

Unique generator for integral ranges. More...

Public Member Functions

 unique_range (T l, T r)
 Creates unique generator for values in given range.
size () const
 Returns the number of values left to generate.
gen ()
 Generates a unique random value in the defined range.
auto gen_list (int size)
 Generates a list of several unique values.
auto gen_all ()
 Generates all unique values left to generate.

Detailed Description

template<typename T>
struct tgen::unique_range< T >

Unique generator for integral ranges.

Examples

// Prints 3 distinct numbers from 1 to 10, uniformly at random.
std::cout << u.gen() << " " << u.gen() << " " << u.gen() << std::endl;
Unique generator for integral ranges.
Definition tgen.h:743

Definition at line 743 of file tgen.h.

Constructor & Destructor Documentation

◆ unique_range()

template<typename T>
tgen::unique_range< T >::unique_range ( T l,
T r )
inline

Creates unique generator for values in given range.

Parameters
lLeft endpoint of the range.
rRight endpoint of the range.

The generator will generate values in [l, r].

Examples

// Creates a generator for distinct nubers from 5 to 10.
auto u = tgen::unique_range(5, 10);

Definition at line 749 of file tgen.h.

Member Function Documentation

◆ gen()

template<typename T>
T tgen::unique_range< T >::gen ( )
inline

Generates a unique random value in the defined range.

Returns
A value in the given range that has not been generated before, uniformly at random.
Exceptions
std::runtime_errorif there no more values to generate.

Complexity

O(log(n)) for the n-th call of gen.

Examples

// Prints 3 distinct numbers from 1 to 10, uniformly at random.
std::cout << u.gen() << " " << u.gen() << " " << u.gen() << std::endl;

Definition at line 756 of file tgen.h.

◆ gen_all()

template<typename T>
auto tgen::unique_range< T >::gen_all ( )
inline

Generates all unique values left to generate.

Returns
A uniformly random tgen::sequence::instance with all unique values from the range that have not been generated yet.

Complexity

The same as calling unique_range::gen until there are no more unique values.

Examples

// Prints all numbers from 1 to 10 in a uniformly random order.
std::cout << tgen::unique_range(1, 10).gen_all() << std::endl;
auto gen_all()
Generates all unique values left to generate.
Definition tgen.h:783

Definition at line 783 of file tgen.h.

◆ gen_list()

template<typename T>
auto tgen::unique_range< T >::gen_list ( int size)
inline

Generates a list of several unique values.

Returns
A uniformly random tgen::sequence::instance with size unique values from the range.
Exceptions
std::runtime_errorif there are not enough values to generate.

Complexity

The same as size calls to unique_range::gen.

Examples

// Prints 3 distinct numbers from 1 to 10, uniformly at random.
std::cout << tgen::unique_range(1, 10).gen_list(3) << std::endl;
auto gen_list(int size)
Generates a list of several unique values.
Definition tgen.h:774

Definition at line 774 of file tgen.h.

◆ size()

template<typename T>
T tgen::unique_range< T >::size ( ) const
inline

Returns the number of values left to generate.

Returns
The number of values left to generate.

Complexity

O(1).

Examples

// Prints current size of distinct generator.
u.gen(), u.gen();
std::cout << u.size() << std::endl;
// "4"

Definition at line 752 of file tgen.h.


The documentation for this struct was generated from the following files:
  • /home/runner/work/tgen/tgen/single_include/tgen.h
  • base.dox