#random #collection #vec

weighted_random_list

一个Vec,允许你定义每个条目的权重并随机获取条目

2个版本

0.1.1 2019年4月8日
0.1.0 2019年4月8日

#331 in #vec

MIT/Apache

16KB
260

weighted_random_list

CI Status

一个Vec,允许你定义每个条目的权重并随机获取条目

extern crate weighted_random_list;

use weighted_random_list::WeightedRandomList;

fn main() {
    let list = [
        (1, "https://source.example.net/archive"),
        (10, "https://mirror-slow0.example.net/archive"),
        (10, "https://mirror-slow1.example.net/archive"),
        (100, "https://mirror-fast.example.net/archive"),
    ];

    let mirrors = list.iter()
            .map(|(weight, url)| (*weight, url.to_string()))
            .collect::<WeightedRandomList<String>>();


    let random_choice = mirrors.get_random();
    println!("Using {:?} this time", random_choice);
}

lib.rs:

WeightedRandomList 允许你在你的集合中随机选择元素

示例选择镜像

在这个例子中,我们希望给“mirror-fast”系统更多的流量/权重,给慢速镜像较少的权重,给主存库最少的权重

extern crate weighted_random_list;

use weighted_random_list::WeightedRandomList;

fn main() {
    let list = [
        (1, "https://source.example.net/archive"),
        (10, "https://mirror-slow0.example.net/archive"),
        (10, "https://mirror-slow1.example.net/archive"),
        (100, "https://mirror-fast.example.net/archive"),
    ];

    let mirrors = list.iter()
            .map(|(weight, url)| (*weight, url.to_string()))
            .collect::<WeightedRandomList<String>>();


    let random_choice = mirrors.get_random();
    println!("Using {:?} this time", random_choice);
}

依赖

~570–800KB
~11K SLoC