Rust rng.gen()何时为非真?
我正在使用中的数字生成器作为通用随机数生成器的模板。问题是,有时函数会无声地失败,所以我添加了一个fail子句,它只打印“nottrue!”Rust rng.gen()何时为非真?,rust,Rust,我正在使用中的数字生成器作为通用随机数生成器的模板。问题是,有时函数会无声地失败,所以我添加了一个fail子句,它只打印“nottrue!” 使用std::rand; 使用std::rand::Rng; fn main(){ 让mut rng=rand::task_rng(); 如果rng.gen(){//bool println!(“f64:{}”,rng.gen::()); }否则{ println!(“不是真的!”); } } 有时运行可执行文件会打印一个随机数,有时会打印“Not tr
使用std::rand;
使用std::rand::Rng;
fn main(){
让mut rng=rand::task_rng();
如果rng.gen(){//bool
println!(“f64:{}”,rng.gen::());
}否则{
println!(“不是真的!”);
}
}
有时运行可执行文件会打印一个随机数,有时会打印“Not true!”。什么可能导致rng.gen()的计算结果为false
编辑:语法来自方法:
//返回Rand类型的随机值。
fn gen(&mut self)->T
当T
类型为bool
时,它将随机生成true
或false
。如果它总是生成一个true
值,那么它就不是有用的随机值
一般来说,if rng.gen(){…}else{…}
是一个有用的习惯用法,可以说,“随机选择两个代码路径中的一个。”方法:
//返回Rand类型的随机值。
fn gen(&mut self)->T
当T
类型为bool
时,它将随机生成true
或false
。如果它总是生成一个true
值,那么它就不是有用的随机值
通常,
if rng.gen(){…}else{…}
是一个有用的习惯用法,可以说,“随机选择两个代码路径中的一个。”让我们看看签名
然后呢?“一种可以使用Rng随机生成的类型。”,其中包括其实现者bool
简单地说,gen()
可以根据可以推断的类型,返回实现Rand
的任何类型的值。你可以得到一个随机数,一个随机字符,甚至一个随机布尔
if
子句必须为bool类型。因此,类型推断器确定该特定gen()
调用的T
是bool
。您还可以编写rng.gen::()
来达到相同的效果
因此,将评估if/else结构的哪个分支是随机的。让我们看看签名 然后呢?“一种可以使用Rng随机生成的类型。”,其中包括其实现者
bool
简单地说,gen()
可以根据可以推断的类型,返回实现Rand
的任何类型的值。你可以得到一个随机数,一个随机字符,甚至一个随机布尔
if
子句必须为bool类型。因此,类型推断器确定该特定gen()
调用的T
是bool
。您还可以编写rng.gen::()
来达到相同的效果
因此,您的if/else结构的哪个分支将被评估是随机的。如果有人提交一个pull请求,将
bool
注释替换为例如random bool
,或者以其他方式使这个示例更清晰,那将是一个很酷的选择:。很棒的呼叫。公关部表示,如果有人提交拉取请求,将bool
注释替换为例如random bool
,或者以其他方式使此示例更清晰,那就太酷了:。很棒的呼叫。PR生成了一个随机生成器,它返回布尔值,在真实路径中,是一个随机数生成器。这是一个初始类型的第一个例子。ThanksOh,所以有一个随机生成器,它返回布尔值,在这个真实路径中,有一个随机数生成器。这是一个初始类型的第一个例子。谢谢
use std::rand;
use std::rand::Rng;
fn main() {
let mut rng = rand::task_rng();
if rng.gen() { // bool
println!("f64: {}", rng.gen::<f64>());
} else {
println!("Not true!");
}
}
// Return a random value of a Rand type.
fn gen<T: Rand>(&mut self) -> T