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
}