public double[] mcmcAsk(String X, Dictionary <String, bool> evidence, int numberOfVariables, Randomizer r) { double[] retval = new double[2]; List <String> _nonEvidenceVariables = nonEvidenceVariables(evidence, X); Dictionary <String, bool> evt = createRandomEvent( _nonEvidenceVariables, evidence, r); for (int j = 0; j < numberOfVariables; j++) { foreach (string variable in _nonEvidenceVariables) { BayesNetNode node = getNodeOf(variable); List <BayesNetNode> blanket = markovBlanket(node); Dictionary <string, bool> mb = createMBValues(blanket, evt); // event.put(node.getVariable(), node.isTrueFor( // r.getProbability(), mb)); evt[node.getVariable()] = truthValue(rejectionSample(node .getVariable(), mb, 100, r), r); bool queryValue = evt[X]; if (queryValue) { retval[0] += 1; } else { retval[1] += 1; } } } return(Util.normalize(retval)); }