---
name: "std::shuffle_order_engine"
section: "3cxx"
platform: "linux"
package: "libstdc++-12-doc"
version: "12.4.0-5"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/std::shuffle_order_engine/3cxx"
---

# std::shuffle\_order\_engine(3cxx)

Produces random numbers by reordering random numbers from some base engine.

## NAME

std::shuffle\_order\_engine\< \_RandomNumberEngine, \_\_k \> - Produces random numbers by reordering random numbers from some base engine.

## SYNOPSIS

`#include <random>`

### Public Types

template\<**typename** **\_Sseq** \> **using** **\_If\_seed\_seq** = **typename** **enable\_if**\< \_\_detail::\_\_is\_seed\_seq\< **\_Sseq**, **shuffle\_order\_engine**, **result\_type** \>::value \>::type\
 **typedef** \_RandomNumberEngine::result\_type **result\_type**\

### Public Member Functions

**shuffle\_order\_engine** ()\
 Constructs a default shuffle\_order\_engine engine.  **shuffle\_order\_engine** (\_RandomNumberEngine &&**\_\_rng**)\
 Move constructs a shuffle\_order\_engine engine.  template\<**typename** **\_Sseq** , **typename**  = \_If\_seed\_seq\<\_Sseq\>\> **shuffle\_order\_engine** (**\_Sseq** &\_\_q)\
 Generator construct a shuffle\_order\_engine engine.  **shuffle\_order\_engine** (const \_RandomNumberEngine &**\_\_rng**)\
 Copy constructs a shuffle\_order\_engine engine.  **shuffle\_order\_engine** (**result\_type** **\_\_s**)\
 Seed constructs a shuffle\_order\_engine engine.  const \_RandomNumberEngine & **base** () const noexcept\
 **void** **discard** (unsigned long long **\_\_z**)\
 **result\_type** **operator()** ()\
 **void** **seed** ()\
 Reseeds the shuffle\_order\_engine object with the default seed for the underlying base class generator engine.  template\<**typename** **\_Sseq** \> \_If\_seed\_seq\< **\_Sseq** \> **seed** (**\_Sseq** &\_\_q)\
 Reseeds the shuffle\_order\_engine object with the given seed sequence.  **void** **seed** (**result\_type** **\_\_s**)\
 Reseeds the shuffle\_order\_engine object with the default seed for the underlying base class generator engine.

### Static Public Member Functions

**static** constexpr **result\_type** **max** ()\
 **static** constexpr **result\_type** **min** ()\

### Static Public Attributes

**static** constexpr size\_t **table\_size**\

### Friends

template\<**typename** **\_RandomNumberEngine1** , size\_t \_\_k1, **typename** \_CharT , **typename** \_Traits \> **std::basic\_ostream**\< \_CharT, \_Traits \> & **operator\<\<** (**std::basic\_ostream**\< \_CharT, \_Traits \> &**\_\_os**, const **std::shuffle\_order\_engine**\< **\_RandomNumberEngine1**, **\_\_k1** \> &\_\_x)\
 Inserts the current state of a shuffle\_order\_engine random number generator engine `__x` into the output stream `__os`.  bool **operator==** (const **shuffle\_order\_engine** &**\_\_lhs**, const **shuffle\_order\_engine** &**\_\_rhs**)\
 template\<**typename** **\_RandomNumberEngine1** , size\_t \_\_k1, **typename** \_CharT , **typename** \_Traits \> **std::basic\_istream**\< \_CharT, \_Traits \> & **operator\>\>** (**std::basic\_istream**\< \_CharT, \_Traits \> &**\_\_is**, **std::shuffle\_order\_engine**\< **\_RandomNumberEngine1**, **\_\_k1** \> &\_\_x)\
 Extracts the current state of a % subtract\_with\_carry\_engine random number generator engine `__x` from the input stream `__is`.

## Detailed Description

### template\<typename \_RandomNumberEngine, size\_t \_\_k\>

class std::shuffle\_order\_engine\< \_RandomNumberEngine, \_\_k \>"Produces random numbers by reordering random numbers from some base engine.

The values from the base engine are stored in a sequence of size `__k` and shuffled by an algorithm that depends on those values.

## Member Typedef Documentation

### template\<typename \_RandomNumberEngine , size\_t \_\_k\> typedef \_RandomNumberEngine::result\_type std::shuffle\_order\_engine\< \_RandomNumberEngine, \_\_k \>::result\_type

The type of the generated random value.

## Constructor & Destructor Documentation

### template\<typename \_RandomNumberEngine , size\_t \_\_k\> std::shuffle\_order\_engine\< \_RandomNumberEngine, \_\_k \>::shuffle\_order\_engine ()` [inline]`

Constructs a default shuffle\_order\_engine engine. The underlying engine is default constructed as well.

### template\<typename \_RandomNumberEngine , size\_t \_\_k\> std::shuffle\_order\_engine\< \_RandomNumberEngine, \_\_k \>::shuffle\_order\_engine (const \_RandomNumberEngine & \_\_rng)` [inline]`, ` [explicit]`

Copy constructs a shuffle\_order\_engine engine. Copies an existing base class random number generator.

**Parameters**

*\_\_rng* An existing (base class) engine object.

### template\<typename \_RandomNumberEngine , size\_t \_\_k\> std::shuffle\_order\_engine\< \_RandomNumberEngine, \_\_k \>::shuffle\_order\_engine (\_RandomNumberEngine && \_\_rng)` [inline]`, ` [explicit]`

Move constructs a shuffle\_order\_engine engine. Copies an existing base class random number generator.

**Parameters**

*\_\_rng* An existing (base class) engine object.

### template\<typename \_RandomNumberEngine , size\_t \_\_k\> std::shuffle\_order\_engine\< \_RandomNumberEngine, \_\_k \>::shuffle\_order\_engine (result\_type \_\_s)` [inline]`, ` [explicit]`

Seed constructs a shuffle\_order\_engine engine. Constructs the underlying generator engine seeded with `__s`.

**Parameters**

*\_\_s* A seed value for the base class engine.

### template\<typename \_RandomNumberEngine , size\_t \_\_k\> template\<typename \_Sseq , typename = \_If\_seed\_seq\<\_Sseq\>\> std::shuffle\_order\_engine\< \_RandomNumberEngine, \_\_k \>::shuffle\_order\_engine (\_Sseq & \_\_q)` [inline]`, ` [explicit]`

Generator construct a shuffle\_order\_engine engine.

**Parameters**

*\_\_q* A seed sequence.

## Member Function Documentation

### template\<typename \_RandomNumberEngine , size\_t \_\_k\> const \_RandomNumberEngine & std::shuffle\_order\_engine\< \_RandomNumberEngine, \_\_k \>::base () const` [inline]`, ` [noexcept]`

Gets a const reference to the underlying generator engine object.

### template\<typename \_RandomNumberEngine , size\_t \_\_k\> void std::shuffle\_order\_engine\< \_RandomNumberEngine, \_\_k \>::discard (unsigned long long \_\_z)` [inline]`

Discard a sequence of random numbers.

### template\<typename \_RandomNumberEngine , size\_t \_\_k\> static constexpr result\_type std::shuffle\_order\_engine\< \_RandomNumberEngine, \_\_k \>::max ()` [inline]`, ` [static]`, ` [constexpr]`

Gets the maximum value in the generated random number range.

### template\<typename \_RandomNumberEngine , size\_t \_\_k\> static constexpr result\_type std::shuffle\_order\_engine\< \_RandomNumberEngine, \_\_k \>::min ()` [inline]`, ` [static]`, ` [constexpr]`

Gets the minimum value in the generated random number range.

### template\<typename \_RandomNumberEngine , size\_t \_\_k\> shuffle\_order\_engine\< \_RandomNumberEngine, \_\_k \>::result\_type std::shuffle\_order\_engine\< \_RandomNumberEngine, \_\_k \>::operator() ()

Gets the next value in the generated random number sequence.

References **std::max()**, and **std::min()**.

### template\<typename \_RandomNumberEngine , size\_t \_\_k\> void std::shuffle\_order\_engine\< \_RandomNumberEngine, \_\_k \>::seed ()` [inline]`

Reseeds the shuffle\_order\_engine object with the default seed for the underlying base class generator engine.

### template\<typename \_RandomNumberEngine , size\_t \_\_k\> template\<typename \_Sseq \> \_If\_seed\_seq\< \_Sseq \> std::shuffle\_order\_engine\< \_RandomNumberEngine, \_\_k \>::seed (\_Sseq & \_\_q)` [inline]`

Reseeds the shuffle\_order\_engine object with the given seed sequence.

**Parameters**

*\_\_q* A seed generator function.

### template\<typename \_RandomNumberEngine , size\_t \_\_k\> void std::shuffle\_order\_engine\< \_RandomNumberEngine, \_\_k \>::seed (result\_type \_\_s)` [inline]`

Reseeds the shuffle\_order\_engine object with the default seed for the underlying base class generator engine.

## Friends And Related Symbol Documentation

### template\<typename \_RandomNumberEngine , size\_t \_\_k\> template\<typename \_RandomNumberEngine1 , size\_t \_\_k1, typename \_CharT , typename \_Traits \> std::basic\_ostream\< \_CharT, \_Traits \> & operator\<\< (std::basic\_ostream\< \_CharT, \_Traits \> & \_\_os, const std::shuffle\_order\_engine\< \_RandomNumberEngine1, \_\_k1 \> & \_\_x)` [friend]`

Inserts the current state of a shuffle\_order\_engine random number generator engine `__x` into the output stream `__os`.

**Parameters**

*\_\_os* An output stream. \
 *\_\_x* A shuffle\_order\_engine random number generator engine.

**Returns**

The output stream with the state of `__x` inserted or in an error state.

### template\<typename \_RandomNumberEngine , size\_t \_\_k\> bool operator== (const shuffle\_order\_engine\< \_RandomNumberEngine, \_\_k \> & \_\_lhs, const shuffle\_order\_engine\< \_RandomNumberEngine, \_\_k \> & \_\_rhs)` [friend]`

Compares two shuffle\_order\_engine random number generator objects of the same type for equality.

**Parameters**

*\_\_lhs* A shuffle\_order\_engine random number generator object. \
 *\_\_rhs* Another shuffle\_order\_engine random number generator object.

**Returns**

true if the infinite sequences of generated values would be equal, false otherwise.

### template\<typename \_RandomNumberEngine , size\_t \_\_k\> template\<typename \_RandomNumberEngine1 , size\_t \_\_k1, typename \_CharT , typename \_Traits \> std::basic\_istream\< \_CharT, \_Traits \> & operator\>\> (std::basic\_istream\< \_CharT, \_Traits \> & \_\_is, std::shuffle\_order\_engine\< \_RandomNumberEngine1, \_\_k1 \> & \_\_x)` [friend]`

Extracts the current state of a % subtract\_with\_carry\_engine random number generator engine `__x` from the input stream `__is`.

**Parameters**

*\_\_is* An input stream. \
 *\_\_x* A shuffle\_order\_engine random number generator engine.

**Returns**

The input stream with the state of `__x` extracted or in an error state.

## Author

Generated automatically by Doxygen for libstdc++ from the source code.
