Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Random 如何使用rand crate对我的类型进行随机抽样(即,对于任意分布,impl Distribution<;Point>;,其中Point是我的类型)_Random_Rust_Traits - Fatal编程技术网

Random 如何使用rand crate对我的类型进行随机抽样(即,对于任意分布,impl Distribution<;Point>;,其中Point是我的类型)

Random 如何使用rand crate对我的类型进行随机抽样(即,对于任意分布,impl Distribution<;Point>;,其中Point是我的类型),random,rust,traits,Random,Rust,Traits,我已为二维点定义了一种类型: struct Point(f64, f64) 我希望能够使用randcrate生成随机点。为了避免对rand板条箱中的所有发行版手动实现Distribution,我尝试对所有实现Distribution的发行版实现此特性 D的impl分布{ fn样本(&self,rng:&mut R)->点{ 点(自采样(rng)、自采样(rng)) } } 但是,我得到一个错误,即类型&的实现存在冲突。有办法解决这个问题吗?错误消息包含很多有价值的信息。请阅读它,并在您的问题

我已为二维点定义了一种类型:

struct Point(f64, f64)
我希望能够使用
rand
crate生成随机点。为了避免对
rand
板条箱中的所有发行版手动实现
Distribution
,我尝试对所有实现
Distribution
的发行版实现此特性

D的impl分布{
fn样本(&self,rng:&mut R)->点{
点(自采样(rng)、自采样(rng))
}
}

但是,我得到一个错误,即类型
&
的实现存在冲突。有办法解决这个问题吗?

错误消息包含很多有价值的信息。请阅读它,并在您的问题中包含完整的错误消息,这样我们也可以阅读它。也就是说,如果以这种方式实现,大多数发行版没有多大意义。例如,正态分布应该以旋转对称的方式扩展到一个点,而不是简单地在每个坐标中使用正态分布。所以我认为你想做的事情一开始没有多大意义。@SvenMarnach实际上你通过简单地采样两个一维正态分布,得到了二维正态分布。但你是对的,这对于其他许多发行版来说都没有意义。@Jmb你是对的,我后来注意到,我选择了一个恰好可以使用它的示例。:)@SvenMarnach我已经理解了错误发生的原因。我感兴趣的是,是否可以只对非引用的发行版实现这个特性。错误消息包含了很多有价值的信息。请阅读它,并在您的问题中包含完整的错误消息,这样我们也可以阅读它。也就是说,如果以这种方式实现,大多数发行版没有多大意义。例如,正态分布应该以旋转对称的方式扩展到一个点,而不是简单地在每个坐标中使用正态分布。所以我认为你想做的事情一开始没有多大意义。@SvenMarnach实际上你通过简单地采样两个一维正态分布,得到了二维正态分布。但你是对的,这对于其他许多发行版来说都没有意义。@Jmb你是对的,我后来注意到,我选择了一个恰好可以使用它的示例。:)@SvenMarnach我已经理解了错误发生的原因。我感兴趣的是,是否有可能只对非引用的发行版实现这个特性。
impl<D: Distribution<f64>> Distribution<Point> for D {
    fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> Point {
        Point(self.sample(rng), self.sample(rng))
    }
}