Guest User

100,000 Simulations

a guest
Apr 9th, 2020
814
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.60 KB | None | 0 0
  1. import java.util.Random;
  2.  
  3. public class Main {
  4.  
  5.     public static class Reward {
  6.         String name;
  7.         int amount;
  8.  
  9.         public Reward(String rewardName, int rewardAmount) {
  10.             name = rewardName;
  11.             amount = rewardAmount;
  12.         }
  13.  
  14.         public void printReward() {
  15.             System.out.println(amount + " " + name);
  16.         }
  17.     }
  18.  
  19.     public static void main(String[] args) {
  20.         // write your code here
  21.         int numStars = 0;
  22.         int numDice = 78;
  23.         boolean karma = false;
  24.         int luckyDice = 0;
  25.         int[] results = new int[100000];
  26.  
  27.         Reward one = new Reward("Spirit", 2000000);
  28.         Reward two = new Reward("Promotion Stones", 1500);
  29.         Reward three = new Reward("Magic Dust", 1000);
  30.         Reward four = new Reward("Stars", 3);
  31.         Reward five = new Reward("Dice", 1);
  32.         Reward six = new Reward("3-star shards", 60);
  33.         Reward seven = new Reward("Spirit", 2000000);
  34.         Reward eight = new Reward("Monster Souls", 1500);
  35.         Reward nine = new Reward("Magic Dust", 500);
  36.         Reward ten = new Reward("Fortune Hut", 0);
  37.         Reward eleven = new Reward("Stars", 3);
  38.         Reward twelve = new Reward("Promotion Stones", 1500);
  39.         Reward thirteen = new Reward("5-star shards", 30);
  40.         Reward fourteen = new Reward("Spirit", 2000000);
  41.         Reward fifteen = new Reward("Karma Hut", -1);
  42.         Reward sixteen = new Reward("Magic Dust", 1500);
  43.         Reward seventeen = new Reward("4-star shards", 30);
  44.         Reward eighteen = new Reward("Stars", 3);
  45.         Reward nineteen = new Reward("Chaos Stones", 200);
  46.         Reward twenty = new Reward("Lucky Dice", 1);
  47.  
  48.         Reward[] Monopoly = new Reward[]{one, two, three, four, five, six, seven, eight, nine, ten, eleven, twelve, thirteen, fourteen, fifteen, sixteen, seventeen, eighteen, nineteen, twenty};
  49.  
  50.         int position = 0;
  51.  
  52.         for (int a = 0; a < 100000; a++) {
  53.             for (int i = 0; i < numDice; i++) {
  54.                 int nextMove = rollDie();
  55.                 if (karma && (nextMove%2 == 1)) {
  56.                     position -= nextMove;
  57.                 } else if (luckyDice > 0 && ((19-position <= 6) && (19-position > 0))) {
  58.                     int moves = 19-position;
  59.                     for (int j = 0; j < moves; j++) {
  60.                         position++;
  61.                         if (Monopoly[position].name.equals("Stars")) {
  62.                             numStars += Monopoly[position].amount;
  63.                         }
  64.                     }
  65.                 } else {
  66.                     for (int j = 0; j < nextMove; j++) {
  67.                         position++;
  68.                         if (position > 19) {
  69.                             position %= 20;
  70.                         }
  71.                         if (Monopoly[position].name.equals("Stars")) {
  72.                             numStars += Monopoly[position].amount;
  73.                         }
  74.                     }
  75.                 }
  76.                 if (Monopoly[position].name.equals("Stars")) {
  77.                     if (Monopoly[position].amount < 5) {
  78.                         Monopoly[position].amount++;
  79.                     }
  80.                 }
  81.                 if (Monopoly[position].name.equals("Dice")) {
  82.                     numDice++;
  83.                 }
  84.                 if (Monopoly[position].amount == -1) {
  85.                     karma = true;
  86.                 } else {
  87.                     karma = false;
  88.                 }
  89.                 if (Monopoly[position].name.equals("Lucky Dice")) {
  90.                     luckyDice++;
  91.                 }
  92.             }
  93.             if (luckyDice > 0) {
  94.                 for (int j = 0; j < 6; j++) {
  95.                     position++;
  96.                     if (position > 19) {
  97.                         position %= 20;
  98.                     }
  99.                     if (Monopoly[position].name.equals("Stars")) {
  100.                         numStars += Monopoly[position].amount;
  101.                     }
  102.                 }
  103.             }
  104.             results[a] = numStars;
  105.             numStars = 0;
  106.             position = 0;
  107.             numDice = 78;
  108.             karma = false;
  109.             Monopoly[3].amount = 3;
  110.             Monopoly[10].amount = 3;
  111.             Monopoly[18].amount = 3;
  112.         }
  113.         for (int i = 0; i < results.length; i++) {
  114.             System.out.println(results[i]);
  115.         }
  116.         System.out.println("\nAverage: " + mean(results) + " stars");
  117.         System.out.println("Maximum: " + max(results) + " stars");
  118.         System.out.println("Minimum: " + min(results) + " stars");
  119.         System.out.println("Range: " + range(results) + " stars");
  120.     }
  121.  
  122.     public static double mean(int[] numbers) {
  123.         double sum = 0;
  124.         for (int number : numbers) {
  125.             sum += number;
  126.         }
  127.         return sum/((double)numbers.length);
  128.     }
  129.  
  130.     public static int max(int[] numbers) {
  131.         int max = numbers[0];
  132.         for (int i = 1; i < numbers.length; i++) {
  133.             if (numbers[i] > max) {
  134.                 max = numbers[i];
  135.             }
  136.         }
  137.         return max;
  138.     }
  139.  
  140.     public static int min(int[] numbers) {
  141.         int min = numbers[0];
  142.         for (int i = 1; i < numbers.length; i++) {
  143.             if (numbers[i] < min) {
  144.                 min = numbers[i];
  145.             }
  146.         }
  147.         return min;
  148.     }
  149.  
  150.     public static int range(int[] numbers) {
  151.         return max(numbers) - min(numbers);
  152.     }
  153.  
  154.     public static int rollDie() {
  155.         Random random = new Random();
  156.         return random.nextInt(6)+1;
  157.     }
  158. }
Advertisement
Add Comment
Please, Sign In to add comment