Function malachite_nz::integer::random::striped_random_negative_integers
source · pub fn striped_random_negative_integers(
seed: Seed,
mean_stripe_numerator: u64,
mean_stripe_denominator: u64,
mean_bits_numerator: u64,
mean_bits_denominator: u64
) -> StripedRandomIntegers<GeometricRandomNegativeSigneds<i64>> ⓘ
Expand description
Generates striped random negative Integer
s whose absolute values have a specified mean bit
length.
The actual bit length is chosen from a geometric distribution with mean $m$, where $m$ is
mean_bits_numerator / mean_bits_denominator
; $m$ must be greater than 1. A striped bit
sequence with the given stripe parameter is generated and truncated at the bit length. The
highest bit is forced to be 1, and the Integer
is generated from the sequence and negated.
The output length is infinite.
See StripedBitSource
for information about generating striped random numbers.
§Expected complexity per iteration
$T(n, m) = O(n + m)$
$M(n, m) = O(n / m)$
where $T$ is time, $M$ is additional memory, $n$ is mean_precision_numerator
, and $m$ is
mean_precision_denominator
.
§Panics
Panics if mean_stripe_denominator
is zero, if mean_stripe_numerator < mean_stripe_denominator
, if mean_bits_numerator
or mean_bits_denominator
are zero, or if
mean_bits_numerator <= mean_bits_denominator
.
§Examples
use malachite_base::iterators::prefix_to_string;
use malachite_base::random::EXAMPLE_SEED;
use malachite_nz::integer::random::striped_random_negative_integers;
use malachite_nz::integer::Integer;
assert_eq!(
prefix_to_string(striped_random_negative_integers(EXAMPLE_SEED, 16, 1, 32, 1), 10),
"[-16, -4, -128, -34391195648, -75493376, -9007199120523391, -8, -8796094070783, -8, \
-950737950171027935941967741439, ...]"
)