Coin Flip Predictor

by skibulk

JavaScript

var trials = 100000;
var guesses = 0;
var wins = 0;
var log = [0,0,0,0,0,1,1,1,1];
var call;

for (var i=0; i<trials; i++){
	// Should average 4.5
	var trend = log.reduce((a, b) => a + b);
  
  // guess the opposite of the trend
  if(trend <= 3) {
  	call = 1;
    guesses++;
  } else if(trend >= 6) {
  	call = 0;
    guesses++;
  } else {
  	call = -1
  }
  
  var flip = crypto.getRandomValues(new Uint32Array(1))[0]/2**32;
  flip = Math.round(flip);
  log.shift();
  log.push(flip);

  if (call == flip) {
    wins++;
  }
}

console.log(guesses, Math.round((wins/guesses)*100)/100);