Advertisement
Guest User

deckSim

a guest
Jan 7th, 2022
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 4.18 KB | None | 0 0
  1. function [poisons, empowers, shuffles, avgPoisons] = deckSim(n)
  2.     deck = [1,2,2,1]; %[poisons,shuffles,dmg empower,flame]
  3.     belt = 1; %0=none,1=poison,2=shuffle
  4.     emp = 0;  %0=none, 1=dmg, 2=shuffle
  5.     poisons = 2; %start combat with an empowered poison above head and poison on belt. ultimately doesnt really matter because i simulate over 100000 iterations for numbers
  6.     empowers = 1;
  7.     shuffles = 0;
  8.     i = 1;
  9.     while i<=n
  10.         draw = randi(sum(deck));
  11.         cardType = 1;
  12.         while sum(deck(1:cardType))<draw
  13.            cardType = cardType + 1;
  14.         end
  15.         deck(cardType) = deck(cardType) - 1;
  16.         if(sum(deck) == 0)
  17.            deck = [1,2,2,1];
  18.            i = i+1;
  19.         end
  20.         switch cardType                             %decision making tree
  21.             case 1                                  %drew a poison
  22.                 switch belt
  23.                     case 0                          %draw poison & no saved card
  24.                         if emp == 2                     %emp is shuffle -> use poison
  25.                             emp = 0;
  26.                             poisons = poisons + 1;
  27.                             shuffles = shuffles + 1;
  28.                             deck(1) = deck(1) + 1;
  29.                         elseif emp == 1 && deck(1) >= deck(2)%if empowerment is damage and there is greater or equal numbers of poisons in your deck as shuffles -> use the poison
  30.                             emp = 0;
  31.                             poisons = poisons + 1;
  32.                             empowers = empowers + 1;
  33.                         else                            %else -> save poison
  34.                             belt = 1;
  35.                         end
  36.                     case 1                          %draw poison & saved poison
  37.                         poisons = poisons + 1;          %-> use poison
  38.                         switch emp
  39.                             case 1
  40.                                 empowers = empowers + 1;
  41.                             case 2
  42.                                 shuffles = shuffles + 1;
  43.                                 deck(1) = deck(1) + 1;
  44.                         end
  45.                         emp = 0;
  46.                     otherwise                       %draw poison & saved shuffle -> shuffle poison
  47.                         if emp ~= 2                 %emp is not shuffle -> burn shuffle before useing poison
  48.                             belt = 0;
  49.                         end
  50.                         emp = 0;
  51.                         poisons = poisons + 1;
  52.                         shuffles = shuffles + 1;
  53.                         deck(1) = deck(1) + 1;
  54.                 end
  55.             case 2                                  %drew a shuffle
  56.                 switch belt
  57.                     case 0                          %draw shuffle & no saved card -> save shuffle
  58.                         belt = 2;
  59.                     case 1                          %draw shuffle & saved poison -> shuffle poison
  60.                         belt = 0;
  61.                         emp = 0;
  62.                         poisons = poisons + 1;
  63.                         shuffles = shuffles + 1;
  64.                         deck(1) = deck(1) + 1;
  65.                     otherwise                       %draw shuffle & saved shuffle -> burn shuffle
  66.                         emp = 2;
  67.                 end
  68.             case 3                                  %drew damage empower
  69.                 emp = 1;
  70.                 if belt == 1 && deck(1) >= deck(2)  %if you have a poison card saved and there are more or equal numbers of poisons in your deck as shuffles -> use the poison
  71.                     emp = 0;
  72.                     belt = 0;
  73.                     poisons = poisons + 1;
  74.                     empowers = empowers + 1;
  75.                 end  
  76.             case 4                                  %drew flame -> use flame
  77.                 if emp == 2
  78.                    shuffles = shuffles + 1;
  79.                    deck(4) = deck(4) + 1;
  80.                 end
  81.                 emp = 0;
  82.         end
  83.     end
  84.     poisons = poisons/n;
  85.     empowers = empowers/n;
  86.     shuffles = shuffles/n;
  87.     avgPoisons=(poisons*10+empowers*4)/((shuffles+6)*2);
  88. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement