This week only. Pastebin PRO Accounts Christmas Special! Don't miss out!Want more features on Pastebin? Sign Up, it's FREE!
Guest

Vengeance Simulator

By: tangedyn on Apr 8th, 2011  |  syntax: Java 5  |  size: 1.54 KB  |  views: 64  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. package tangedyn;
  2.  
  3. import ec.util.MersenneTwisterFast;
  4.  
  5. public class VengeanceSim {
  6.         boolean DEBUG = false;
  7.        
  8.         public void run(double pAvoid, double bossInterval, int samples) {
  9.                 MersenneTwisterFast mRandom = new MersenneTwisterFast();
  10.                 int mSamples = 0;
  11.                 double mTotalVengeance = 0.0;
  12.                 double mVengeance = 1.0;
  13.                 double mTotalVengeanceSq = 0.0;
  14.                 boolean wasAttacked = false;
  15.                 boolean wasHit = false;
  16.                
  17.                 double nextAttack = 0.0;
  18.                 double nextVengeanceCheck = 0.05;
  19.                
  20.                 while (mSamples < samples) {
  21.                         if (nextAttack < nextVengeanceCheck) {
  22.                                 wasAttacked = true;
  23.                                 if (!mRandom.nextBoolean(pAvoid)) wasHit = true;
  24.                                 if (DEBUG) System.out.println(nextAttack + " Attack " + (wasHit ? "HIT" : "MISS"));
  25.                                 nextAttack += bossInterval;
  26.                         }
  27.                         else {
  28.                                 if (!wasAttacked) mVengeance = Math.max(0.0, mVengeance - .1);
  29.                                 else if (wasHit) mVengeance = 1.0;
  30.                                 else mVengeance *= .95;
  31.                                 if (DEBUG) System.out.println(nextVengeanceCheck + " Vengeance = " + mVengeance);
  32.                                 nextVengeanceCheck += 2.0;
  33.                                 mTotalVengeance += mVengeance;
  34.                                 mTotalVengeanceSq += mVengeance * mVengeance;
  35.                                 mSamples ++;
  36.                                 wasHit = wasAttacked = false;
  37.                         }
  38.                 }
  39.                
  40.                 double vengeanceMean = mTotalVengeance / mSamples;
  41.                 double stddev = Math.sqrt(mTotalVengeanceSq / mSamples - (vengeanceMean * vengeanceMean));
  42.                
  43.                 System.out.println("average vengeance = " + vengeanceMean + " +/- " + stddev);
  44.         }
  45.        
  46.        
  47.         public static void main(String args[]) {
  48.                 VengeanceSim sim = new VengeanceSim();
  49.                 sim.run(0.44465738881804, 5, 1000000);
  50.         }
  51. }
clone this paste RAW Paste Data