2个不稳定版本
0.2.0 | 2023年9月13日 |
---|---|
0.1.0 | 2023年3月29日 |
在 算法 中排名2105
11KB
167 行
choose-rand
这是一个用于从一组加权项中选择随机项的小型crate。
安装/设置
要将crate导入到您的项目中,只需运行cargo add choose-rand
在您想要使用crate的任何文件中,添加use choose_rand::prelude::*;
。
示例
use choose_rand::prelude::*;
#[derive(Debug, Clone)]
struct Foo {
prob: f32,
}
impl Probable for Foo {
fn probability(&self) -> f32 {
self.prob
}
}
fn main() -> Result<()> {
let v: Vec<_> = choose_rand::helper::refcellify(
vec![Foo { prob: 0.25 }, Foo { prob: 0.5 }, Foo { prob: 0.1 }, Foo { prob: 0.05 }]
).collect();
let mut rng = rand::thread_rng();
dbg!(v.choose_rand(&mut rng));
Ok(())
}
使用features = ["eq_float"]
用于集合
use choose_rand::prelude::*;
use eq_float::F32;
use std::collections::HashSet;
#[derive(Clone, Debug, Hash)]
struct Foo {
prob: F32,
}
impl Foo {
fn new(prob: f32) -> Self {
Self { prob: F32(prob) }
}
}
impl Probable for Foo {
fn probablity(&self) -> F32 {
self.prob
}
}
fn main() -> Result<()> {
let v: HashSet<_> = choose_rand::helper::refcellify(
vec![Foo::new(0.25), Foo::new(0.5), Foo::new(0.1), Foo::new(0.05)]
).collect();
let mut rng = rand::thread_rng();
dbg!(v.choose_rand(&mut rng));
Ok(())
}
许可证
此库根据MIT
许可证授权。
依赖项
~0.6–1.3MB
~28K SLoC