rust随机整数、浮点数生成
use rand::Rng; let mut random = rand::thread_rng(); // 生成[0, 1)范围内的浮点数 println!("[0,1) f32={}", random.gen::<f32>()); // 生成[0,10)内随机整数 println!("[0,10) i32={}", random.gen_range(0,10));
Rust中生成随机数用得比较多的是rand库,目前最新版本是0.8.5。 文档直达:
0.7.3版本也是用得比较多的。
添加依赖
在Cargo.toml文件中加入依赖:
[dependencies] rand = "0.7.3"
gen()和gen_range()
#[test] fn test_random() { use rand::Rng; use rand::prelude::ThreadRng; let mut random: ThreadRng = rand::thread_rng(); // 生成随机i32值 println!("i32={}", random.gen::<i32>()); // 生成随机u8值 let y: u8 = random.gen(); // 生成指定类型的元组 let point: (f32, f32) = random.gen(); // 生成一个随机数组 let arr: [u8; 5] = random.gen(); // 生成[0,1)范围内随机f32值 println!("[0,1) f32={}", random.gen::<f32>()); // 生成[0,1)范围内随机f64值 println!("[0,1) f64={}", random.gen::<f64>()); // 指定范围[low, high),生成随机数 let x:u8 = random.gen_range(1u8, 100u8); let y:f64 = random.gen_range(-20f64, 20f64); }
测试代码2
use rand::Rng; use rand::prelude::ThreadRng; use rand::prelude::SliceRandom; #[test] fn test_random() { let mut random: ThreadRng = rand::thread_rng(); // 0.7.x的版本,根据参数low和high生成区间[low,high)内的数 let x0_10: i32 = random.gen_range(0,11); println!("{x0_10}"); // 0.8.5版本支持,传入一个Range // println!("{}", random.gen_range(0..=10) as usize); let x: i32 = random.gen(); println!("{x}"); let y = random.gen::<u8>(); println!("{y}"); // 生成1个1-10的数组 let mut nums: Vec<i32> = (1..=10).collect(); // 传入随机变量,对数组元素顺序打乱重排(洗牌算法) nums.shuffle(&mut random); println!("{:?}", nums); }