Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languagejava
public class RandomProgram2 {
    Random random;
    Min min;
    Max max;
    Average average;
    
    void init() {
        random = new Random();
        min = new Min();
        max = new Max();
        average = new Average();
    }
    
    void run() {
        for (int i = 0; i < 1000; i++) {
            long randomValue = random.nextRandom();
            min.accumulate(randomValue);
            max.accumulate(randomValue);
            average.accumulate(randomValue);
        }
        System.out.println("Min: " + min.getMin());
        System.out.println("Max: " + max.getMax());
        System.out.println("Average: " + average.getAverage());
    }
    
    public static void main(String[] args) {
        RandomProgram2 program = new RandomProgram2();
        program.init();
        program.run();
    }
}
PlantUML Macro
object "RandomProgram2" as rp0 {
}
object "Random" as random0 {
	mw = 31
	mz = 42
}
object "Min" as min0 {
	min = 9223372036854775807
}
object "Max" as max0 {
	max = -9223372036854775808
}
object "Average" as average0 {
	count = 0
	sum = 0
}
rp0 -right-> random0: random
rp0 -right-> min0: min
rp0 -right-> max0: max
rp0 -right-> average0: average

object "RandomProgram2" as rp1 {
}
object "Random" as random1 {
	mw = 558000
	mz = 1552698
}
object "Min" as min1 {
	min = 101758174128
}
object "Max" as max1 {
	max = 101758174128
}
object "Average" as average1 {
	count = 1
	sum = 101758174128
}
rp1 -right-> random1: random
rp1 -right-> min1: min
rp1 -right-> max1: max
rp1 -right-> average1: average

rp0 .down.> rp1: runde 1

object "RandomProgram2" as rp2 {
}
object "Random" as random1random2 {
	mw = 606816008
	mz = 1677283553
}
object "Min" as min1min2 {
	min = 101758174128
}
object "Max" as max1max2 {
	max = 109923061745416
}
object "Average" as average1average2 {
	count = 2
	sum = 110024819919544
}
rp2 -right-> random2: random
rp2 -right-> min2: min
rp2 -right-> max2: max
rp2 -right-> average2: average

rp1 .down.> rp2:  runde 2

object "RandomProgram1" as rp1000 {
}
object "Random" as random1000 {
	mw = 290483840
	mz = 1240974898
}
object "Min" as min1000 {
	min = 3057780577
}
object "Max" as max1000 {
	max = 158694648374228
}
object "Average" as average1000 {
	count = 1000
	sum = 78963637600257262
}
rp1000 -right-> random1000: random
rp1000 -right-> min1000: min
rp1000 -right-> max1000: max
rp1000 -right-> average1000: average

rp2 .down.> rp1000:  ... runde 1000
Code Block
languagejava
public class Random {

    // from http://en.wikipedia.org/wiki/Random_number_generation

    long mw = 31;
    long mz = 42;
     
    long nextRandom() {
        mz = 36969 * (mz & 65535) + (mz >> 16);
        mw = 18000 * (mw & 65535) + (mw >> 16);
        return (mz << 16) + mw;
    }
}
Code Block
languagejava
public class Min {
    long min = Long.MAX_VALUE;
    
    public long getMin() {
        return min;
    }
    
    void accumulate(long value) {
        if (value < min) {
            min = value;
        }
    }
}
Code Block
languagejava
public class Max {
    long max = Long.MIN_VALUE;
    
    public long getMax() {
        return max;
    }
    
    void accumulate(long value) {
        if (value > max) {
            max = value;
        }
    }
}
Code Block
public class Average {
    long count = 0, sum = 0;
    
    long getAverage() {
        return sum / count;
    }
    
    void accumulate(long value) {
        sum += value;
        count++;
    }
}

 

 

...