随机生成值

use rand::Rng;
use rand_distr::{Alphanumeric, Distribution, Normal, NormalError, Standard, Uniform};

fn main() -> Result<(), NormalError> {
    let mut rng=rand::thread_rng();
    let n1:u8=rng.gen();
    let n2:u16=rng.gen();
    println!("u8---->{}",n1);
    println!("u16----->{}",n2);
    println!("i32----->{}",rng.gen::<i32>());
    println!("range--->{}",rng.gen_range(1..10));
    let die=Uniform::from(1..7);//均匀分布
    loop {
        let throw=die.sample(&mut rng);
        println!("start----->{}",throw);
        if throw==3 {
            break;
        }
    }
    let normal=Normal::new(2.0,9.0)?;//正态分布
    let v=normal.sample(&mut rng);
    println!("  正态分布: {}", v);
    let rand_tuple=rng.gen::<(i32,bool,f64)>();
    let rand_point=rng.gen::<Point>();//自定义随机值
    println!("  随机值元组:   {:?}", rand_tuple);
    println!("  随机值结构体: {:?}", rand_point);
    let chars:String=rng.sample_iter(Alphanumeric).map(char::from).take(7).collect();//随机字符串
    println!("  随机字符串: {}", chars);
    let mut rng = rand::thread_rng();
    let password:String= (0..PASSWORD_LEN).map(|_|{
        let idx=rng.gen_range(0..CHARSET.len());
        CHARSET[idx] as char
    }).collect();
    println!("  随机密码: {:?}", password);
    Ok(())
}
#[derive(Debug)]
struct Point{
    x:i32,
    y:i32,
}

impl Distribution<Point> for Standard{
    fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> Point {
        let (rand_x,rand_y)=rng.gen();
        Point{
            x: rand_x,
            y: rand_y,
        }
    }
}
const CHARSET: &[u8] = b"abcdefghijklmnopqrstuvwxyz\
                            0123456789)(*&^%$#@!~";
const PASSWORD_LEN: usize = 30;

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值