如何生成随机 num::BigUint?
How do I generate a random num::BigUint?
我需要一个随机的 256 位无符号数。我发现方法 gen_biguint()
有 RandBigInt
特征,但我很难找到它的实现。
我前段时间为 BigInt
尝试过这样做。从那以后,板条箱已经更新。这就是我现在使用它来获得 BigUint
的方式。
extern crate num;
extern crate rand;
use num::bigint::{BigInt, BigUint, RandBigInt};
fn main() {
let mut rng = rand::thread_rng();
let mut n: BigUint = BigUint::default();
loop {
let bigUint: Option<BigUint> = rng.gen_bigint(256).to_biguint();
match bigUint {
Some(num) => {
n = num.clone();
println!("Found the 1st BigUint - {}", num);
break;
}
_ => {}
}
}
}
来自我的 Cargo.toml
的内容
num = "0.1.42"
rand = "0.4.2"
我相信一定有一些直接的方法可以实现这一点。
来自 num
的自述文件:
The rand
feature enables randomization traits in num-bigint
and num-complex
.
[dependencies]
num-bigint = { version = "0.2.0", features = ["rand"] }
rand = "0.5.4"
那么你需要使用一个RandomBits
which implements rand::Distribution
:
extern crate num_bigint;
extern crate rand;
use num_bigint::{BigInt, BigUint, RandomBits};
use rand::Rng;
fn main() {
let mut rng = rand::thread_rng();
let signed: BigInt = rng.sample(RandomBits::new(256));
let unsigned: BigUint = rng.sample(RandomBits::new(256));
println!("{}, {}", signed, unsigned)
}
Shepmaster 的回答是在较新版本的 rand 中引发了特征限制错误。让这个工作:
Cargo.toml
edition = "2018"
[dependencies]
rand = "0.6"
num-bigint = { version = "0.2.2", features = ["rand"] }
main.rs
use num_bigint::{BigUint, RandBigInt};
fn main() {
let mut rng = rand::thread_rng();
let unsigned: BigUint = rng.gen_biguint(256);
println!("{}", unsigned);
}
我需要一个随机的 256 位无符号数。我发现方法 gen_biguint()
有 RandBigInt
特征,但我很难找到它的实现。
我前段时间为 BigInt
尝试过这样做。从那以后,板条箱已经更新。这就是我现在使用它来获得 BigUint
的方式。
extern crate num;
extern crate rand;
use num::bigint::{BigInt, BigUint, RandBigInt};
fn main() {
let mut rng = rand::thread_rng();
let mut n: BigUint = BigUint::default();
loop {
let bigUint: Option<BigUint> = rng.gen_bigint(256).to_biguint();
match bigUint {
Some(num) => {
n = num.clone();
println!("Found the 1st BigUint - {}", num);
break;
}
_ => {}
}
}
}
来自我的 Cargo.toml
的内容num = "0.1.42"
rand = "0.4.2"
我相信一定有一些直接的方法可以实现这一点。
来自 num
的自述文件:
The
rand
feature enables randomization traits innum-bigint
andnum-complex
.
[dependencies]
num-bigint = { version = "0.2.0", features = ["rand"] }
rand = "0.5.4"
那么你需要使用一个RandomBits
which implements rand::Distribution
:
extern crate num_bigint;
extern crate rand;
use num_bigint::{BigInt, BigUint, RandomBits};
use rand::Rng;
fn main() {
let mut rng = rand::thread_rng();
let signed: BigInt = rng.sample(RandomBits::new(256));
let unsigned: BigUint = rng.sample(RandomBits::new(256));
println!("{}, {}", signed, unsigned)
}
Shepmaster 的回答是在较新版本的 rand 中引发了特征限制错误。让这个工作:
Cargo.toml
edition = "2018"
[dependencies]
rand = "0.6"
num-bigint = { version = "0.2.2", features = ["rand"] }
main.rs
use num_bigint::{BigUint, RandBigInt};
fn main() {
let mut rng = rand::thread_rng();
let unsigned: BigUint = rng.gen_biguint(256);
println!("{}", unsigned);
}