1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
use rand::prelude::StdRng;
pub trait Random {
type TensorType;
type ElementType;
fn rand_usize(rng: &mut StdRng,
dim: &[usize],
left: usize, right: usize) -> Self::TensorType;
fn bernoulli() -> Self::TensorType;
fn cauchy() -> Self::TensorType;
fn exponential() -> Self::TensorType;
fn geometric() -> Self::TensorType;
fn log_normal() -> Self::TensorType;
fn normal(rng: &mut StdRng,
dim: &[usize],
mean: Self::ElementType,
std: Self::ElementType) -> Self::TensorType;
fn uniform(rng: &mut StdRng,
dim: &[usize],
from: Self::ElementType,
to: Self::ElementType) -> Self::TensorType;
}