Advertisement
Guest User

Qingque Autarky Simulation Code by Yurikirii#5333

a guest
May 30th, 2023
170
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
JavaScript 1.23 KB | Source Code | 0 0
  1. const probOfSuccess = 0.24;
  2. const maxSkillPoints = 5;
  3. // Editable Fields:
  4. const runs = 1000000000;
  5. const decimalPrecision = 1;
  6.  
  7.  
  8. const simulRun = () => {
  9.     const skillUseDict = {};
  10.     for (let i = 0; i < runs; i++) {
  11.  
  12.         let skillPoints = maxSkillPoints;
  13.         let autarky = false;
  14.  
  15.         while (skillPoints > 0 && !autarky) {
  16.             skillPoints--;
  17.             if (Math.random() < probOfSuccess) { autarky = true };
  18.         }
  19.         if (!autarky) { skillPoints = maxSkillPoints + 1 };
  20.  
  21.         skillUseDict[maxSkillPoints - skillPoints] = (skillUseDict[maxSkillPoints - skillPoints] || 0) + 1;
  22.     }
  23.  
  24.     const dProbDist = Object.fromEntries(Object.entries(skillUseDict).map(val => [val[0], (val[1] / runs * 100)]));
  25.     const cProbDist = Object.fromEntries(Object.entries(dProbDist).map((val, index, array) => {
  26.         if (index === 0 || index === array.length - 1) {return [val[0], val[1].toFixed(decimalPrecision) + "%"]};
  27.         let sum = 0;
  28.         for (let i = index; i >= 0; i--) {
  29.             sum += array[i][1];
  30.         }
  31.         return [val[0], sum.toFixed(decimalPrecision) + "%"];
  32.     }));
  33.  
  34.     console.log(cProbDist);
  35. };
  36.  
  37. console.time('Runtime')
  38. simulRun();
  39. console.timeEnd('Runtime')
  40.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement