Edit in JSFiddle

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;
}