---
name: "std::shuffle_order_engine"
section: "3"
platform: "linux"
package: "gcc"
version: "16.2.1+r23+gd564253eb6c8-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/std::shuffle_order_engine"
---

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

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**\
 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.

**Since**

C++11

## 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\> 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\> 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.
