Namensräume
Varianten
Aktionen

std::uniform_random_bit_generator

Von cppreference.com
< cpp‎ | numeric‎ | random
 
 
 
 
Definiert in Header <random>
template< class G >

concept uniform_random_bit_generator =
    std::invocable<G&> && std::unsigned_integral<std::invoke_result_t<G&>> &&
    requires {
        { G::min() } -> std::same_as<std::invoke_result_t<G&>>;
        { G::max() } -> std::same_as<std::invoke_result_t<G&>>;
        requires std::bool_constant<(G::min() < G::max())>::value;

    };
(seit C++20)

Das Konzept uniform_random_bit_generator<G> gibt an, dass G der Typ eines gleichverteilten Zufallsbitgenerators ist, d.h. Objekte vom Typ G sind Funktionsobjekte, die vorzeichenlose Ganzzahlen zurückgeben, so dass jeder Wert im Bereich der möglichen Ergebnisse (idealerweise) die gleiche Wahrscheinlichkeit hat, zurückgegeben zu werden.

[bearbeiten] Semantische Anforderungen

uniform_random_bit_generator<G> wird nur dann modelliert, wenn für jedes Objekt g vom Typ G gilt:

  • g() liegt im Bereich [G::min()G::max()],
  • g() hat eine amortisierte konstante Komplexität.

[bearbeiten] Hinweise

Um die Anforderung std::bool_constant<(G::min() < G::max())>::value zu erfüllen, müssen sowohl G::min() als auch G::max() konstante Ausdrücke sein, und das Ergebnis des Vergleichs muss true sein.