Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Random;
- public class Main {
- public static class Reward {
- String name;
- int amount;
- public Reward(String rewardName, int rewardAmount) {
- name = rewardName;
- amount = rewardAmount;
- }
- public void printReward() {
- System.out.println(amount + " " + name);
- }
- }
- public static void main(String[] args) {
- // write your code here
- int numStars = 0;
- int numDice = 78;
- boolean karma = false;
- int luckyDice = 0;
- int[] results = new int[100000];
- Reward one = new Reward("Spirit", 2000000);
- Reward two = new Reward("Promotion Stones", 1500);
- Reward three = new Reward("Magic Dust", 1000);
- Reward four = new Reward("Stars", 3);
- Reward five = new Reward("Dice", 1);
- Reward six = new Reward("3-star shards", 60);
- Reward seven = new Reward("Spirit", 2000000);
- Reward eight = new Reward("Monster Souls", 1500);
- Reward nine = new Reward("Magic Dust", 500);
- Reward ten = new Reward("Fortune Hut", 0);
- Reward eleven = new Reward("Stars", 3);
- Reward twelve = new Reward("Promotion Stones", 1500);
- Reward thirteen = new Reward("5-star shards", 30);
- Reward fourteen = new Reward("Spirit", 2000000);
- Reward fifteen = new Reward("Karma Hut", -1);
- Reward sixteen = new Reward("Magic Dust", 1500);
- Reward seventeen = new Reward("4-star shards", 30);
- Reward eighteen = new Reward("Stars", 3);
- Reward nineteen = new Reward("Chaos Stones", 200);
- Reward twenty = new Reward("Lucky Dice", 1);
- Reward[] Monopoly = new Reward[]{one, two, three, four, five, six, seven, eight, nine, ten, eleven, twelve, thirteen, fourteen, fifteen, sixteen, seventeen, eighteen, nineteen, twenty};
- int position = 0;
- for (int a = 0; a < 100000; a++) {
- for (int i = 0; i < numDice; i++) {
- int nextMove = rollDie();
- if (karma && (nextMove%2 == 1)) {
- position -= nextMove;
- } else if (luckyDice > 0 && ((19-position <= 6) && (19-position > 0))) {
- int moves = 19-position;
- for (int j = 0; j < moves; j++) {
- position++;
- if (Monopoly[position].name.equals("Stars")) {
- numStars += Monopoly[position].amount;
- }
- }
- } else {
- for (int j = 0; j < nextMove; j++) {
- position++;
- if (position > 19) {
- position %= 20;
- }
- if (Monopoly[position].name.equals("Stars")) {
- numStars += Monopoly[position].amount;
- }
- }
- }
- if (Monopoly[position].name.equals("Stars")) {
- if (Monopoly[position].amount < 5) {
- Monopoly[position].amount++;
- }
- }
- if (Monopoly[position].name.equals("Dice")) {
- numDice++;
- }
- if (Monopoly[position].amount == -1) {
- karma = true;
- } else {
- karma = false;
- }
- if (Monopoly[position].name.equals("Lucky Dice")) {
- luckyDice++;
- }
- }
- if (luckyDice > 0) {
- for (int j = 0; j < 6; j++) {
- position++;
- if (position > 19) {
- position %= 20;
- }
- if (Monopoly[position].name.equals("Stars")) {
- numStars += Monopoly[position].amount;
- }
- }
- }
- results[a] = numStars;
- numStars = 0;
- position = 0;
- numDice = 78;
- karma = false;
- Monopoly[3].amount = 3;
- Monopoly[10].amount = 3;
- Monopoly[18].amount = 3;
- }
- for (int i = 0; i < results.length; i++) {
- System.out.println(results[i]);
- }
- System.out.println("\nAverage: " + mean(results) + " stars");
- System.out.println("Maximum: " + max(results) + " stars");
- System.out.println("Minimum: " + min(results) + " stars");
- System.out.println("Range: " + range(results) + " stars");
- }
- public static double mean(int[] numbers) {
- double sum = 0;
- for (int number : numbers) {
- sum += number;
- }
- return sum/((double)numbers.length);
- }
- public static int max(int[] numbers) {
- int max = numbers[0];
- for (int i = 1; i < numbers.length; i++) {
- if (numbers[i] > max) {
- max = numbers[i];
- }
- }
- return max;
- }
- public static int min(int[] numbers) {
- int min = numbers[0];
- for (int i = 1; i < numbers.length; i++) {
- if (numbers[i] < min) {
- min = numbers[i];
- }
- }
- return min;
- }
- public static int range(int[] numbers) {
- return max(numbers) - min(numbers);
- }
- public static int rollDie() {
- Random random = new Random();
- return random.nextInt(6)+1;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment