Namespaces
Variants

std:: uniform_random_bit_generator

From cppreference.net
Definiert im 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> spezifiziert, dass G der Typ eines gleichverteilten Zufallsbitgenerators ist, das heißt, Objekte vom Typ G sind Funktionsobjekte, die vorzeichenlose Ganzzahlwerte zurückgeben, wobei jeder Wert im Bereich der möglichen Ergebnisse (idealiter) die gleiche Wahrscheinlichkeit hat, zurückgegeben zu werden.

Semantische Anforderungen

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

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

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.