JSFiddle - React, Tailwind, and code Playground
by jrab227
JavaScript
var data = []
var state = 0
for (var i = 0; i < 10; i++){
var state = MetropolisHastings(stdNormal, state, newStateFrom)
data.push(state)
}
console.log(data)
function stdNormal(X) {
var v = (1/Math.sqrt(Math.PI * 2)) * Math.exp( -X * X / 2)
return v
}
function MetropolisHastings(probability, state, generateAState) {
var aPossibleState = generateAState(state);
var transitionOdds = probability(aPossibleState) / probability(state);
var newState
if (Math.random() <= transitionOdds) {
newState = aPossibleState
} else {
newState = state
}
return newState
}
function newStateFrom(X) {
var pick
if (Math.random() <= .5){
pick = X + .2
} else {
pick = X - .2
}
return pick
}