Skip to content

Commit b796ca5

Browse files
committed
Add type Sampler & redefine EigvalsSampler & EigvecsSampler
1 parent b0605ca commit b796ca5

File tree

1 file changed

+10
-11
lines changed

1 file changed

+10
-11
lines changed

src/distributions.jl

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,35 @@
11
using Distributions: Distribution
22
using LinearAlgebra: qr
3-
using Random: AbstractRNG, Sampler, default_rng
3+
using Random: AbstractRNG, default_rng
44

55
import Random: rand
66

77
export EigvalsSampler, EigvecsSampler
88

9-
struct EigvalsSampler{R<:AbstractRNG,T,D<:Distribution} <: Sampler{T}
9+
abstract type Sampler{R<:AbstractRNG,D<:Distribution} end
10+
11+
struct EigvalsSampler{R,D} <: Sampler{R,D}
1012
rng::R
11-
type::T
1213
dist::D
13-
function EigvalsSampler(dist, type=Float64, rng=default_rng())
14-
return new{typeof(rng),typeof(type),typeof(dist)}(rng, type, dist)
14+
function EigvalsSampler(dist, rng=default_rng())
15+
return new{typeof(rng),typeof(dist)}(rng, dist)
1516
end
1617
end
1718

18-
struct EigvecsSampler{R<:AbstractRNG,T,D<:Distribution} <: Sampler{T}
19+
struct EigvecsSampler{R,D} <: Sampler{R,D}
1920
rng::R
20-
type::T
2121
dist::D
22-
EigvecsSampler(dist, type=Float64, rng=default_rng()) =
23-
new{typeof(rng),typeof(type),typeof(dist)}(rng, type, dist)
22+
EigvecsSampler(dist, rng=default_rng()) = new{typeof(rng),typeof(dist)}(rng, dist)
2423
end
2524

2625
function Hamiltonian(s₁::EigvalsSampler, s₂::EigvecsSampler, m::Integer)
2726
evals, evecs = sort(rand(s₁, m)), collect(rand(s₂, m, m))
2827
return Hamiltonian(Eigen(evals, evecs))
2928
end
3029

31-
rand(s::EigvalsSampler, dims::Integer...) = rand(s.rng, s.dist, dims...) .* oneunit(s.type)
30+
rand(s::EigvalsSampler, dims::Integer...) = rand(s.rng, s.dist, dims...)
3231
function rand(s::EigvecsSampler, m::Integer, n::Integer)
33-
matrix = rand(s.rng, s.dist, m, n) .* oneunit(s.type)
32+
matrix = rand(s.rng, s.dist, m, n)
3433
q, _ = qr(matrix)
3534
return collect(q)
3635
end

0 commit comments

Comments
 (0)