When I want to implemet a Sampler in Julia as seen in the example below, I always get an error cannot assign a value to imported variable Turing.sample from module Main Stacktrace
, but I don’t know how to resolve this.
using Distributions
# Define the custom sampler
struct ScaledShiftedBetaSampler <: Sampleable{Univariate, Continuous}
distribution::Beta
a::Float64
b::Float64
end
function Base.rand(d::ScaledShiftedBetaSampler)
sample = rand(d.distribution)
return sample * (d.b - d.a) + d.a
end
# Create an instance of the custom sampler
beta_dist = Beta(2.0, 5.0)
sampler = ScaledShiftedBetaSampler(beta_dist, 0.0, 1.0)
# Generate a sample
sample = rand(sampler)
println("Sample from scaled and shifted Beta distribution: ", sample)