Используйте Rng::gen_range
для одноразового значения:
use rand::{self, Rng}; // 0.6.4
fn main() {
let mut rng = rand::thread_rng();
let die = rng.gen_range(1, 7);
println!("The die was: {}", die);
}
Под капотом это создает структуру Uniform
.Создайте эту структуру самостоятельно, если вы будете получать несколько случайных чисел:
use rand::{
self,
distributions::{Distribution, Uniform},
}; // 0.6.4
fn main() {
let mut rng = rand::thread_rng();
let die_range = Uniform::new_inclusive(1, 6);
let die = die_range.sample(&mut rng);
println!("{}", die);
}
Uniform
выполняет некоторые предварительные вычисления, чтобы выяснить, как отобразить полный диапазон случайных значений в желаемый диапазон без внесения смещения.Он переводит и изменяет размер вашего исходного диапазона, чтобы наиболее точно соответствовать диапазону генератора случайных чисел, отбрасывает любые случайные числа, которые выходят за пределы этого нового диапазона, затем изменяет размеры и переводит обратно в исходный диапазон.
См. Также: