Rust : rand库与不同分布下的随机数产生

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:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值