toml下:
[dependencies]
rand = "0.5"
代码:
extern crate rand;
use std::{thread, time};
use rand::prelude::*;
use rand::distributions::{Distribution, Uniform, Normal};
fn main() {
let sleep_seconds = time::Duration::from_secs(1000);
println!("random()模式: rand数的产生=>");
// 产生u8的随机数
let x: u8 = random();
println!("x:u8 {}", x);
//产生f64的随机数
let y = random::<f64>();
println!("y:f64 {}", y);
//产生bool的随机数
let b_bool:bool =random();
println!("b_bool:{}",b_bool);
// 可以推断出bool
if random() {
println!("Heads!");
}
// 不同分布:均匀分布
let range_uniform = Uniform::new(-10.0f64, 10.0); //均匀分布
let sample_uniform =range_uniform.sample(&mut rand::thread_rng());
println!("range_uniform:{:?}",range_uniform);
println!("sample_uniform :{}",sample_uniform);
// 正态分布
// 均值 6, 方差为2
let normal = Normal::new(6.0, 2.0);
let v = normal.sample(&mut rand::thread_rng());
println!("{} is from a N(6, 4) distribution", v);
let num :u32 =5;
let vs_normal:Vec<f64> =(0..num).map(|x| normal.sample(&mut rand::thread_rng())).collect();
println!("{:?} is from a N(6,4) distribution vectors",vs_normal);
// 换一种模式:thread_rng 产生随机数
println!("thread_rng模式: rand数的产生=>");
let mut rng = thread_rng();
let b :bool =rng.gen();
println!("rng下b:{}",b);
let r_f64: f64 = rng.gen(); // 产生一个区间数[0, 1)
println!("r_f64 is: {} float64", x);
let ch = rng.gen::<char>(); //
println!("char is: {}", ch);
println!("Number from 0 to 9: {}", rng.gen_range(0, 10));
println!("float from -100.0 to 100: {}", rng.gen_range(-100_f32, 100_f32));
println!("f64:{}",rng.gen::<f64>());
println!("f32:{}",rng.gen::<f32>());
println!("i32:{}",rng.gen::<i32>());
println!("i8:{}",rng.gen::<i8>());
thread::sleep(sleep_seconds);
}
output: