gpt4 book ai didi

rust - rng.gen() 什么时候不正确?

转载 作者:行者123 更新时间:2023-11-29 08:24:09 25 4
gpt4 key购买 nike

我正在使用来自 std:rand 的数字生成器作为通用随机数生成器的模板。问题是有时候,该函数会默默地失败,所以我添加了一个简单地打印“Not true!”的失败子句

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!");
}
}

有时运行可执行文件会打印一个随机数,有时会打印“Not true!”。什么可能导致 rng.gen() 评估为 false?

编辑:语法

最佳答案

让我们看看签名。

fn gen<T: Rand>(&mut self) -> T

Rand ? “一种可以使用 Rng 随机生成的类型。”,其中包括其实现者 bool .

简单来说,gen()可以返回实现 Rand 的任何类型的值,基于它可以推断的类型。您可以获得一个随机数、一个随机字符,甚至是一个随机 bool 值。

if子句必须是 bool 类型。因此类型推断器确定 T对于那个特定的 gen()调用是 bool .你也可以写 rng.gen::<bool>()达到同样的效果。

因此,将评估 if/else 结构的哪个分支是随机的。

关于rust - rng.gen() 什么时候不正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24153311/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com