index.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. let partiers = 23;
  2. let months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
  3. display = ()=>{
  4. let datesDiv = document.querySelector("#datesDiv");
  5. document.querySelector("#partiers").value = partiers;
  6. while(datesDiv.children.length > 0){
  7. datesDiv.removeChild(datesDiv.firstChild);
  8. }
  9. let nums = [];
  10. for(let i = 0; i < partiers; i++){
  11. let num = Math.floor((Math.random() * 366) + 1);
  12. if(num === 60){
  13. i--;
  14. }else{
  15. nums.push(num);
  16. }
  17. }
  18. let matches = [];
  19. for(let i = 0; i < nums.length; i++){
  20. for(let j = i + 1; j < nums.length; j++){
  21. if(nums[i] === nums[j]){
  22. matches.push(nums[i]);
  23. break;
  24. }
  25. }
  26. }
  27. for(let num of nums){
  28. let date = new Date(2020, 0);
  29. date = new Date(date.setDate(num));
  30. let para = document.createElement("p");
  31. para.classList = "date";
  32. para.innerText = `${months[date.getMonth()]} ${date.getDate()}`;
  33. datesDiv.appendChild(para);
  34. for(let match of matches){
  35. if(match === num){
  36. para.classList += " match";
  37. break;
  38. }
  39. }
  40. }
  41. calculateChance();
  42. },
  43. calculateChance = ()=>{
  44. let chance = document.querySelector("h3");
  45. let input = document.querySelector("#partiers");
  46. partiers = input.value;
  47. let percent = 1
  48. for(let i = 1; i < partiers; i++){
  49. percent *= (365 - i) / 365;
  50. }
  51. chance.innerText = `${((1 - percent) * 100).toFixed(4)}% chance of a match`;
  52. }
  53. document.getElementById("partiers").onchange = ()=>{calculateChance()};
  54. document.getElementById("tryAgain").onclick = ()=>{display()};
  55. display();