---
name: "std::independent_bits_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::independent_bits_engine"
---

# std::independent\_bits\_engine(3)

## NAME

std::independent\_bits\_engine\< \_RandomNumberEngine, \_\_w, \_UIntType \>

## SYNOPSIS

\#include \<random\>

### Public Types

typedef \_UIntType **result\_type**\

### Public Member Functions

**independent\_bits\_engine** ()\
 Constructs a default independent\_bits\_engine engine.  **independent\_bits\_engine** (\_RandomNumberEngine &&\_\_rng)\
 Move constructs a independent\_bits\_engine engine.  template\<typename \_Sseq, typename = \_If\_seed\_seq\<\_Sseq\>\> **independent\_bits\_engine** (\_Sseq &\_\_q)\
 Generator construct a independent\_bits\_engine engine.  **independent\_bits\_engine** (const \_RandomNumberEngine &\_\_rng)\
 Copy constructs a independent\_bits\_engine engine.  **independent\_bits\_engine** (**result\_type** \_\_s)\
 Seed constructs a independent\_bits\_engine engine.  const \_RandomNumberEngine & **base** () const noexcept\
 Gets a const reference to the underlying generator engine object.  void **discard** (unsigned long long \_\_z)\
 Discard a sequence of random numbers.  **result\_type** **operator()** ()\
 Gets the next value in the generated random number sequence.  void **seed** ()\
 Reseeds the independent\_bits\_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 independent\_bits\_engine object with the given seed sequence.  void **seed** (**result\_type** \_\_s)\
 Reseeds the independent\_bits\_engine object with the default seed for the underlying base class generator engine.

### Static Public Member Functions

static constexpr **result\_type** **max** ()\
 Gets the maximum value in the generated random number range.  static constexpr **result\_type** **min** ()\
 Gets the minimum value in the generated random number range.

### Friends

bool **operator==** (const **independent\_bits\_engine** &\_\_lhs, const **independent\_bits\_engine** &\_\_rhs)\
 Compares two independent\_bits\_engine random number generator objects of the same type for equality.  template\<typename \_CharT, typename \_Traits\> **std::basic\_istream**\< \_CharT, \_Traits \> & **operator\>\>** (**std::basic\_istream**\< \_CharT, \_Traits \> &\_\_is, **std::independent\_bits\_engine**\< \_RandomNumberEngine, \_\_w, \_UIntType \> &\_\_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 \_\_w, typename \_UIntType\>

class std::independent\_bits\_engine\< \_RandomNumberEngine, \_\_w, \_UIntType \>"Produces random numbers by combining random numbers from some base engine to produce random numbers with a specified number of bits \_\_w.

**Since**

C++11

## Member Typedef Documentation

### template\<typename \_RandomNumberEngine, size\_t \_\_w, typename \_UIntType\> typedef \_UIntType std::independent\_bits\_engine\< \_RandomNumberEngine, \_\_w, \_UIntType \>::result\_type

The type of the generated random value.

## Constructor & Destructor Documentation

### template\<typename \_RandomNumberEngine, size\_t \_\_w, typename \_UIntType\> std::independent\_bits\_engine\< \_RandomNumberEngine, \_\_w, \_UIntType \>::independent\_bits\_engine () \[inline\]

Constructs a default independent\_bits\_engine engine. The underlying engine is default constructed as well.

Referenced by **operator==**.

### template\<typename \_RandomNumberEngine, size\_t \_\_w, typename \_UIntType\> std::independent\_bits\_engine\< \_RandomNumberEngine, \_\_w, \_UIntType \>::independent\_bits\_engine (const \_RandomNumberEngine & \_\_rng) \[inline\], \[explicit\]

Copy constructs a independent\_bits\_engine engine. Copies an existing base class random number generator.

**Parameters**

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

### template\<typename \_RandomNumberEngine, size\_t \_\_w, typename \_UIntType\> std::independent\_bits\_engine\< \_RandomNumberEngine, \_\_w, \_UIntType \>::independent\_bits\_engine (\_RandomNumberEngine && \_\_rng) \[inline\], \[explicit\]

Move constructs a independent\_bits\_engine engine. Copies an existing base class random number generator.

**Parameters**

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

References **std::move()**.

### template\<typename \_RandomNumberEngine, size\_t \_\_w, typename \_UIntType\> std::independent\_bits\_engine\< \_RandomNumberEngine, \_\_w, \_UIntType \>::independent\_bits\_engine (result\_type \_\_s) \[inline\], \[explicit\]

Seed constructs a independent\_bits\_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 \_\_w, typename \_UIntType\> template\<typename \_Sseq, typename = \_If\_seed\_seq\<\_Sseq\>\> std::independent\_bits\_engine\< \_RandomNumberEngine, \_\_w, \_UIntType \>::independent\_bits\_engine (\_Sseq & \_\_q) \[inline\], \[explicit\]

Generator construct a independent\_bits\_engine engine.

**Parameters**

*\_\_q* A seed sequence.

## Member Function Documentation

### template\<typename \_RandomNumberEngine, size\_t \_\_w, typename \_UIntType\> const \_RandomNumberEngine & std::independent\_bits\_engine\< \_RandomNumberEngine, \_\_w, \_UIntType \>::base () const \[inline\], \[noexcept\]

Gets a const reference to the underlying generator engine object.

### template\<typename \_RandomNumberEngine, size\_t \_\_w, typename \_UIntType\> void std::independent\_bits\_engine\< \_RandomNumberEngine, \_\_w, \_UIntType \>::discard (unsigned long long \_\_z) \[inline\]

Discard a sequence of random numbers.

### template\<typename \_RandomNumberEngine, size\_t \_\_w, typename \_UIntType\> constexpr result\_type std::independent\_bits\_engine\< \_RandomNumberEngine, \_\_w, \_UIntType \>::max () \[inline\], \[static\], \[constexpr\]

Gets the maximum value in the generated random number range.

### template\<typename \_RandomNumberEngine, size\_t \_\_w, typename \_UIntType\> constexpr result\_type std::independent\_bits\_engine\< \_RandomNumberEngine, \_\_w, \_UIntType \>::min () \[inline\], \[static\], \[constexpr\]

Gets the minimum value in the generated random number range.

### template\<typename \_RandomNumberEngine, size\_t \_\_w, typename \_UIntType\> independent\_bits\_engine\< \_RandomNumberEngine, \_\_w, \_UIntType \>::result\_type std::independent\_bits\_engine\< \_RandomNumberEngine, \_\_w, \_UIntType \>::operator() ()

Gets the next value in the generated random number sequence.

References **std::\_\_lg()**, **std::\_\_numeric\_limits\_base::digits**, and **std::numeric\_limits\< \_Tp \>::max()**.

### template\<typename \_RandomNumberEngine, size\_t \_\_w, typename \_UIntType\> void std::independent\_bits\_engine\< \_RandomNumberEngine, \_\_w, \_UIntType \>::seed () \[inline\]

Reseeds the independent\_bits\_engine object with the default seed for the underlying base class generator engine.

### template\<typename \_RandomNumberEngine, size\_t \_\_w, typename \_UIntType\> template\<typename \_Sseq\> \_If\_seed\_seq\< \_Sseq \> std::independent\_bits\_engine\< \_RandomNumberEngine, \_\_w, \_UIntType \>::seed (\_Sseq & \_\_q) \[inline\]

Reseeds the independent\_bits\_engine object with the given seed sequence.

**Parameters**

*\_\_q* A seed generator function.

### template\<typename \_RandomNumberEngine, size\_t \_\_w, typename \_UIntType\> void std::independent\_bits\_engine\< \_RandomNumberEngine, \_\_w, \_UIntType \>::seed (result\_type \_\_s) \[inline\]

Reseeds the independent\_bits\_engine object with the default seed for the underlying base class generator engine.

## Friends And Related Symbol Documentation

### template\<typename \_RandomNumberEngine, size\_t \_\_w, typename \_UIntType\> bool operator== (const independent\_bits\_engine\< \_RandomNumberEngine, \_\_w, \_UIntType \> & \_\_lhs, const independent\_bits\_engine\< \_RandomNumberEngine, \_\_w, \_UIntType \> & \_\_rhs) \[friend\]

Compares two independent\_bits\_engine random number generator objects of the same type for equality.

**Parameters**

*\_\_lhs* A independent\_bits\_engine random number generator object. \
 *\_\_rhs* Another independent\_bits\_engine random number generator object.

**Returns**

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

References **independent\_bits\_engine()**.

### template\<typename \_RandomNumberEngine, size\_t \_\_w, typename \_UIntType\> template\<typename \_CharT, typename \_Traits\> std::basic\_istream\< \_CharT, \_Traits \> & operator\>\> (std::basic\_istream\< \_CharT, \_Traits \> & \_\_is, std::independent\_bits\_engine\< \_RandomNumberEngine, \_\_w, \_UIntType \> & \_\_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 independent\_bits\_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.
