pub fn select_char(
rnd: &mut impl Rng,
special: &[char],
preferred: &[RangeInclusive<char>],
ranges: &[RangeInclusive<char>],
) -> charExpand description
Selects a random character the way CharStrategy does.
If special is non-empty, there is a 50% chance that a character from this
array is chosen randomly, and will be returned if that character falls
within ranges.
If preferred is non-empty, there is a 50% chance that any generation
which gets past the special step picks a random element from this list,
then a random character from within that range (both endpoints inclusive).
That character will be returned if it falls within ranges.
In all other cases, an element is picked randomly from ranges and a
random character within the range (both endpoints inclusive) is chosen and
returned.
Notice that in all cases, ranges completely defines the set of characters
that can possibly be defined.
It is legal for ranges in all cases to contain non-characters.
Both preferred and ranges bias selection towards characters in smaller
ranges. This is deliberate. preferred is usually tuned to select
particular characters anyway. ranges is usually derived from some
external property, and the fact that a range is small often means it is
more interesting.