In this post, we will see how to resolve How do I create a Strategy that generates a value in a given range in proptest?
Question:
I want to create aStrategy
that generates u32
values less than 1000000
efficiently and uniformly. The only two ways that I know to do this are to use any::<u32>()
and then do one of the following:- use
prop_filter
to filter out values greater than or equal to1000000
- use
prop_map
to convert the values greater than or equal to1000000
to values less than1000000
using the modulus operator (i.e..prop_map(|x|x % 1000000)
). However, this would not provide a uniform sample, and it seems a bit clunky.
Is there any better way to do this, perhaps by using
proptest::prelude::Rng::gen_range()
somehow?Best Answer:
Just use aRange
, as their tutorial states:0..100i32 is a strategy to generate i32s between 0, inclusive, and 100, exclusive
so the strategy for numbers up to
1_000_000
is 0u32..1_000_000
If you have better answer, please add a comment about this, thank you!
Source: Stackoverflow.com