import java.util.Random;
class Signal {
	//Private instance fields
	private double arrivalTime;			//The time when the signal arrives in the system
	private double processingTime1;		//The time needed to process this signal by processor p1
	private double processingTime2;		//The time needed to process this signal by processor p2
	
	
	//Static variables
	private static Random interArrivalTimeGenerator = new Random();
	private static Random processingTime1Generator = new Random();
	private static Random processingTime2Generator = new Random();
	private static double previousArrivalTime = 0;
	
	
	//Constructors
	public Signal(){
		//do what?
	}
	public Signal(double arrivalTimeMean, double processingTime1Mean, double processingTime2Mean){
		arrivalTime = previousArrivalTime - arrivalTimeMean * Math.log(interArrivalTimeGenerator.nextDouble());
		processingTime1 = -processingTime1Mean * Math.log(processingTime1Generator.nextDouble());
		processingTime2 = -processingTime2Mean * Math.log(processingTime2Generator.nextDouble());
		previousArrivalTime = arrivalTime;
	}
	
	
	//Public methods
	public double getArrivalTime(){
		return arrivalTime;
	}
	public double getProcessingTime1(){
		return processingTime1;
	}
	public double getProcessingTime2(){
		return processingTime2;
	}
	public String toString(){
		return ("Signal(" + arrivalTime + ", " + processingTime1 + ", " + processingTime2 + ")");
	}
}
