Rust 如何获取从最小值到最大值(含最小值)的随机数

Rust 如何获取从最小值到最大值(含最小值)的随机数,rust,Rust,gen_Range a,b可以获得从a到b的随机数,但不包括b。 如果我写gen_range-21474836482147483648,它就不能工作,因为gen_range->i32,i32 那么,我该怎么办 您也可以将Uniform::fromstd::i32::MIN..=std::i32::MAX与inclusive range一起使用,如果重复从同一范围进行采样,速度会更快: 使用数组填充:rng.fill&mut a; 使用[i]=rng.gen 阵列构造len有什么问题? use r

gen_Range a,b可以获得从a到b的随机数,但不包括b。 如果我写gen_range-21474836482147483648,它就不能工作,因为gen_range->i32,i32

那么,我该怎么办

您也可以将Uniform::fromstd::i32::MIN..=std::i32::MAX与inclusive range一起使用,如果重复从同一范围进行采样,速度会更快: 使用数组填充:rng.fill&mut a; 使用[i]=rng.gen 阵列构造len有什么问题?
use rand::Rng;
fn main() {
    let mut zz = rand::thread_rng();
    let mut a: [i32; 4096] = [0; 4096];
    for n in 0..4096 {
        a[n] = zz.gen_range(-2147483648,2147483647);
    }
    ......
}
use rand::distributions::{Distribution, Uniform};
fn main() {
    let between = Uniform::from(std::i32::MIN..=std::i32::MAX);
    let mut rng = rand::thread_rng();
    let mut a = [0_i32; 4096];
    for i in 0..4096 {
        a[i] = between.sample(&mut rng);
    }
    println!("{} {}", a.iter().min().unwrap(), a.iter().max().unwrap());
}

use rand::{thread_rng, Rng};
fn main() {
    let mut rng = thread_rng();
    let mut a = [0_i32; 4096];
    rng.fill(&mut a); // array fill
    println!("{} {}", a.iter().min().unwrap(), a.iter().max().unwrap());
}
use rand::{thread_rng, Rng};
fn main() {
    let mut rng = thread_rng();
    let mut a = [0_i32; 4096];
    for i in 0..4096 {
        a[i] = rng.gen();
    }
    println!("{} {}", a.iter().min().unwrap(), a.iter().max().unwrap());
}
let a: [i32; 32] = rng.gen();
a[i] = rng.gen_range(-2_147_483_648_i64, 2_147_483_648_i64) as i32;
use rand::Rng;
fn main() {
    let mut rng = rand::thread_rng();
    let mut a = [0_i32; 4096];
    for i in 0..4096 {
        a[i] = rng.gen_range(-2_147_483_648_i64, 2_147_483_648_i64) as i32;
    }
    println!("{} {}", a.iter().min().unwrap(), a.iter().max().unwrap());
}