Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package tangedyn;
- import ec.util.MersenneTwisterFast;
- public class VengeanceSim {
- boolean DEBUG = false;
- public void run(double pAvoid, double bossInterval, int samples) {
- MersenneTwisterFast mRandom = new MersenneTwisterFast();
- int mSamples = 0;
- double mTotalVengeance = 0.0;
- double mVengeance = 1.0;
- double mTotalVengeanceSq = 0.0;
- boolean wasAttacked = false;
- boolean wasHit = false;
- double nextAttack = 0.0;
- double nextVengeanceCheck = 0.05;
- while (mSamples < samples) {
- if (nextAttack < nextVengeanceCheck) {
- wasAttacked = true;
- if (!mRandom.nextBoolean(pAvoid)) wasHit = true;
- if (DEBUG) System.out.println(nextAttack + " Attack " + (wasHit ? "HIT" : "MISS"));
- nextAttack += bossInterval;
- }
- else {
- if (!wasAttacked) mVengeance = Math.max(0.0, mVengeance - .1);
- else if (wasHit) mVengeance = 1.0;
- else mVengeance *= .95;
- if (DEBUG) System.out.println(nextVengeanceCheck + " Vengeance = " + mVengeance);
- nextVengeanceCheck += 2.0;
- mTotalVengeance += mVengeance;
- mTotalVengeanceSq += mVengeance * mVengeance;
- mSamples ++;
- wasHit = wasAttacked = false;
- }
- }
- double vengeanceMean = mTotalVengeance / mSamples;
- double stddev = Math.sqrt(mTotalVengeanceSq / mSamples - (vengeanceMean * vengeanceMean));
- System.out.println("average vengeance = " + vengeanceMean + " +/- " + stddev);
- }
- public static void main(String args[]) {
- VengeanceSim sim = new VengeanceSim();
- sim.run(0.44465738881804, 5, 1000000);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement