JSFiddle - React, Tailwind, and code Playground

by dru_zod

JavaScript

var randomBetween = function(min, max) {
  min = Math.ceil(min);
  max = Math.floor(max);
  return Math.floor(Math.random() * (max - min)) + min;
};

var randomDigit = function() {
  return randomBetween(0, 10);
};

var buyAndOpen = function(number, has, buys) {
  if (!buys)
    return has;

  var r = randomBetween(0, number);

  //console.log({ has: has, buy: buys, r: r });

  if (r < has) {
    return buyAndOpen(number, has, buys - 1);
  }

  return buyAndOpen(number, has + 1, buys - 1);
};

var run = function(n) {
  var number = 20;
  var has = 3;
  var buys = 3;
  var gotDuplicates = 0;

  for (var i = 0; i < n; i += 1) {
    var after = buyAndOpen(number, has, buys);
    if (after < 6) {
      gotDuplicates += 1;
    }
  }

  return (gotDuplicates / n);
};

console.log(1 - run(10000000));