tesseract v5.3.3.20231005
testing::internal::Random Class Reference

#include <gtest-internal.h>

Public Member Functions

 Random (uint32_t seed)
 
void Reseed (uint32_t seed)
 
uint32_t Generate (uint32_t range)
 

Static Public Attributes

static const uint32_t kMaxRange = 1u << 31
 

Detailed Description

Definition at line 870 of file gtest-internal.h.

Constructor & Destructor Documentation

◆ Random()

testing::internal::Random::Random ( uint32_t  seed)
inlineexplicit

Definition at line 874 of file gtest-internal.h.

874: state_(seed) {}

Member Function Documentation

◆ Generate()

uint32_t testing::internal::Random::Generate ( uint32_t  range)

Definition at line 348 of file gtest.cc.

348 {
349 // These constants are the same as are used in glibc's rand(3).
350 // Use wider types than necessary to prevent unsigned overflow diagnostics.
351 state_ = static_cast<uint32_t>(1103515245ULL*state_ + 12345U) % kMaxRange;
352
353 GTEST_CHECK_(range > 0)
354 << "Cannot generate a number in the range [0, 0).";
355 GTEST_CHECK_(range <= kMaxRange)
356 << "Generation of a number in [0, " << range << ") was requested, "
357 << "but this can only generate numbers in [0, " << kMaxRange << ").";
358
359 // Converting via modulus introduces a bit of downward bias, but
360 // it's simple, and a linear congruential generator isn't too good
361 // to begin with.
362 return state_ % range;
363}
#define GTEST_CHECK_(condition)
Definition: gtest-port.h:1008
static const uint32_t kMaxRange

◆ Reseed()

void testing::internal::Random::Reseed ( uint32_t  seed)
inline

Definition at line 876 of file gtest-internal.h.

876{ state_ = seed; }

Member Data Documentation

◆ kMaxRange

const uint32_t testing::internal::Random::kMaxRange = 1u << 31
static

Definition at line 872 of file gtest-internal.h.


The documentation for this class was generated from the following files: