package statalign.mcmc;
import statalign.base.Utils;
public class UniformProposal extends ProposalDistribution<Double> {
private double centre;
private double width;
public double logDensity(Double x) {
if ((x > (centre-width/2)) && (x < (centre+width/2))) {
return 0.0;
}
else {
return Double.NEGATIVE_INFINITY;
}
}
public Double sample() {
return (Utils.generator.nextDouble() - 0.5) * width + centre;
}
public void updateProposal(double proposalWidthControlVariable,
Double currentParam) {
centre = currentParam;
width = proposalWidthControlVariable;
}
}