yojimbos_law

gnat simulator.ash

Aug 20th, 2018
582
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.97 KB | None | 0 0
  1. //lots of assumptions are made in this script.
  2. //It should not be trusted.
  3. boolean name;
  4. int candles;
  5. boolean scroll;
  6. int random_number;
  7. int roll_limit;
  8. float turns;
  9. float[int] turns_array;
  10. float total_turns;
  11. float average_turns;
  12. float variance;
  13.  
  14. for i from 1 to 100000{
  15. name = false;
  16. candles = 0;
  17. scroll = false;
  18. turns = 0;
  19. while(!scroll || candles <3 || !name){
  20.  
  21. //expected turns to encounter eldritch horror.
  22. //This implementation reduces variance relative to
  23. //how things actually work. We'll compensate for that later.
  24. //maybe.
  25. //turns += 5;
  26.  
  27. // cleeshing all non-horror things:
  28. // 1/(1/5 + 4/5 * 1/5) = 5/(1+4/5) = 25/9;
  29. //turns += 2.7777;
  30.  
  31. // cleeshing all non-horror, non-bacon things:
  32. // 1/(1/5 + 3/5 * 1/5) = 5/(1+3/5) = 25/8;
  33. //turns += 3.125;
  34.  
  35. //this implementation won't mess with variance:
  36. random_number = random(5);
  37. turns += 1;
  38.  
  39. if(random_number == 0){
  40. //4 for candles, 12 for demonname, 1 for scroll.
  41. roll_limit = 17;
  42. //adjust for daily caps.
  43. if(scroll){
  44. roll_limit -= 1;
  45. }
  46. if(candles >= 6){
  47. roll_limit -= 4;
  48. }
  49. random_number = random(roll_limit);
  50. if((random_number >= 4 && random_number < 7 && candles < 6) || (random_number < 4 && candles >= 6)){
  51. name = true;
  52. }
  53. if(random_number < 4 && candles < 6){
  54. candles++;
  55. }
  56. if(!scroll && random_number == (roll_limit-1)){
  57. scroll = true;
  58. }
  59. }
  60. }
  61. turns_array[i] = turns;
  62. }
  63.  
  64. foreach i in turns_array{
  65. total_turns+= turns_array[i];
  66. }
  67.  
  68. average_turns = total_turns.to_float() / turns_array.count().to_float();
  69.  
  70. foreach i in turns_array{
  71. variance += (turns_array[i].to_float() - average_turns)**2;
  72. }
  73.  
  74. variance = variance / turns_array.count().to_float();
  75.  
  76. print("getting a gnat demon summon takes "+average_turns+" on average, with standard deviation "+(variance**(0.5)));
  77.  
  78.  
  79. //"getting a gnat demon summon takes 103.04625 on average, with standard deviation 63.37605597493195"
Advertisement
Add Comment
Please, Sign In to add comment