var sampleAttributes = function() {
  var skill = randomInteger(11);

  // compute performance variability.
  // variability goes down as skill increases
  // 
  // variability
  //
  //     |*
  //     | *
  //     |  *
  //     |   *
  //     |____*____ skill
  //
  var variability = Math.round(0.2 * (11 - skill));
  
  return {skill: skill,
          variability: variability};
}

var performance = function(p) {
  return p.skill + randomInteger(2 * p.variability) - p.variability;
}

var beats = function(p1, p2) {
  var perf1 = performance(p1);
  var perf2 = performance(p2);
  
  if (perf1 == perf2) {
    // coin flip
    factor(Math.log(0.5))
  }
  
  factor(perf1 > perf2 ? 0 : -Infinity)
}

var know = function(bool) {
  factor(bool ? 0 : -Infinity);
}

var compare = function(p1, p2) {
  if (p1.skill == p2.skill) {
    return "A = B";
  }
  if (p1.skill > p2.skill) {
    return "A > B";
  }
  return "A < B";
}

print(Enumerate(function() {
  
  var alice = sampleAttributes();
  var bob = sampleAttributes();
  
  beats(alice, bob)
  
  return alice.skill
  
  
  }, 5000))

other settings: