class Random { public: // TODO(tommi): Change this so that the seed can be initialized internally, // e.g. by offering two ways of constructing or offer a static method that // returns a seed that's suitable for initialization. // The problem now is that callers are calling clock_->TimeInMicroseconds() // which calls TickTime::Now().Ticks(), which can return a very low value on // Mac and can result in a seed of 0 after conversion to microseconds. // Besides the quality of the random seed being poor, this also requires // the client to take on extra dependencies to generate a seed. // If we go for a static seed generator in Random, we can use something from // webrtc/rtc_base and make sure that it works the same way across platforms. // See also discussion here: https://codereview.webrtc.org/1623543002/ explicit Random(uint64_t seed);
// Return pseudo-random integer of the specified type. // We need to limit the size to 32 bits to keep the output close to uniform. template <typename T>
T Rand() {
static_assert(std::numeric_limits<T>::is_integer &&
std::numeric_limits<T>::radix == 2 &&
std::numeric_limits<T>::digits <= 32, "Rand is only supported for built-in integer types that are " "32 bits or smaller."); returnstatic_cast<T>(NextOutput());
}
// Uniformly distributed pseudo-random number in the interval [0, t].
uint32_t Rand(uint32_t t);
// Uniformly distributed pseudo-random number in the interval [low, high].
uint32_t Rand(uint32_t low, uint32_t high);
// Uniformly distributed pseudo-random number in the interval [low, high].
int32_t Rand(int32_t low, int32_t high);
// Normal Distribution. double Gaussian(double mean, double standard_deviation);
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.1Bemerkung:
(vorverarbeitet am 2026-08-24)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.