[#absl-LogUniform] = xref:absl.adoc[absl]::LogUniform :relfileprefix: ../ :mrdocs: Produces random integral values whose logarithm is uniformly distributed. == Synopsis Declared in `<absl/random/distributions.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template< typename IntType, typename URBG> IntType LogUniform( URBG&& urbg, IntType lo, IntType hi, IntType base = 2); ---- == Description `absl::LogUniform` produces random values distributed where the log to a given base of all values is uniform in a closed interval [lo, hi]. `T` must be an integral type, but may be inferred from the types of `lo` and `hi`. I.e., `LogUniform(0, n, b)` is uniformly distributed across buckets [0], [1, b‐1], [b, bˆ2‐1].. [bˆ(k‐1), (bˆk)‐1].. [bˆfloor(log(n, b)), n] and is uniformly distributed within each bucket. The resulting probability density is inversely related to bucket size, though values in the final bucket may be more likely than previous values. (In the extreme case where n = bˆi the final value will be tied with zero as the most probable result. If `lo` is nonzero then this distribution is shifted to the desired interval, so LogUniform(lo, hi, b) is equivalent to LogUniform(0, hi‐lo, b)+lo. See https://en.wikipedia.org/wiki/Reciprocal_distribution Example: absl::BitGen bitgen; ... int v = absl::LogUniform(bitgen, 0, 1000); == Return Value A random value drawn from the log‐uniform distribution. == Parameters [cols="1,4"] |=== | Name| Description | *urbg* | The uniform random bit generator. | *lo* | The inclusive lower bound of the interval. | *hi* | The inclusive upper bound of the interval. | *base* | The logarithm base determining the bucket sizes. |=== [.small]#Created with https://www.mrdocs.com[MrDocs]#