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);
  if (r < has - 1) {
  	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;
    }
  }
  
  console.log(gotDuplicates / n);
};

//run(100);