JSFiddle - React, Tailwind, and code Playground
by jrab227
JavaScript
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;
}